有什么方法可以将字符串与我们选择的子字符串分开吗?像:罪(日志(10))

问题描述 投票:0回答:1

有没有办法将字符串淹没并将其放入数组中,例如: y = sin(log(tan(x))) -> {"y", "=", "sin", "(", ...} 没有空格很重要,例如:sin(x) = sin ( x )

这是我的代码:

bool firstDone = 0;
char strr[][4] = { "sin", "cos", "(", ")", "x" };
char str[] = "sin(cos(x))", st[7][5];

for (int i = 0; i < 4; i++) {
    if (!firstDone) {
        if (strlen(strtok(str, strr[i])) < 4) {
            strcpy(st[i], strtok(str, strr[i]));
            firstDone = 1;
        }
    }
    if (firstDone) {
        if (strlen(strtok(NULL, strr[i])) < 4) {
            strcpy(st[i], strtok(NULL, strr[i]));
        }
    }

}
for (int i = 0; i < 7; i++) {
    printf("%s, ", st[i]);
}
arrays c string split
1个回答
0
投票

这是您要求的工作示例。

strtok()
“标记”字符串,根据第二个参数将其分成单独的子字符串,在本例中是一个只有空格(“”)的字符串。
strtok()
在字符串中查找此空格标记,并相应地隔离子串;

#include <stdio.h>
#include <string.h>

int main()
{
    char str[] = "sin() cos() tang()";

    char* token = strtok(str, " ");

    while (token != NULL) {
        printf(" % s\n", token);
        token = strtok(NULL, " ");
    }

    return 0;
}

输出:

    sin()
    cos()
    tang()

可运行、经过测试的代码位于here

© www.soinside.com 2019 - 2024. All rights reserved.