我创建了一个用逗号分割字符串的函数。
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
char splitted_line[8][50];
void split(char *line){
printf("line 9\n");
char *part = strtok(line, ",");
printf("line 11\n");
for(int i=1; i<8; i++){
strcpy(splitted_line[i], part);
printf("%s\n", splitted_line[i]);
part = strtok(NULL, ",");
}
}
int main(){
char *line = "123,456,789";
split(line);
return 0;
}
但是运行后的结果是:
line 9
Segmentation fault (core dumped)
看来问题出在char *part = strtok(line, ",");
哪里,但我不知道那是什么。
strtok()
将直接修改传递的原始字符串。
您不得修改字符串文字。
char *line = "123,456,789";
应该是可修改的数组
char line[] = "123,456,789";
也不要忘记在做前检查是否part
不在。NULL
strcpy(splitted_line[i], part);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句