我有一个包含空格的字符串,例如“print 2”或“print 3 test”。我试图删除第一个参数 - 在这些示例中,打印。
我试过 strtok():
char *test;
test = strtok(COMMAND, " ");
printf("%s\n", test);
但是打印测试会出现段错误。我尝试制作一个函数,它在 main() 中运行良好,但是当从我需要它的函数中调用时,它也会出现段错误。
char* split(char S[], int N) {
printf("Running split() on %s\n", S);
int Spaces = 1;
int i = 0;
for (i; i<strlen(S) && Spaces <=N; i++) {
if (S[i] == ' ') {
Spaces++;
}
}
printf("split: %s\n", &S[i]);
//return "0";
return &S[i];
}
我猜这是某种指针问题。命令被传递到打印函数中,如下所示:
Print(File, Lines, COMMAND);
最佳答案
我不知道您的测试样本中的 COMMAND 是什么,但您应该测试 strtok 是否返回 null(当 strtok 找不到标记时)。 带有空指针的 printf 会给你一个段库。
通常您从循环中调用 strtok: http://www.cplusplus.com/reference/clibrary/cstring/strtok/
关于c - 在 C 中将字符串分成两半的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11400828/