有没有办法将字符串淹没并将其放入数组中,例如: 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]);
}
这是您要求的工作示例。
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