char *commandstrings[MAXARGS];
commandstr = strtok(line,"|");
int i = 0;
while(commandstr != NULL){
commandstrings[i] = commandstr;
printf("%s \n",commandstr);
commandstr = strtok(NULL,"|");
i++;
}
printf("first parsing complete!");
大家好。我尝试使用strtok将字符串分成各种子字符串,并将它们存储到一个名为" commandstrings"的字符串数组中。
问题是我在到达最终的printf之前就遇到了分段错误。 假设我把这一行作为参数:" lol | omg | BBQ"
程序打印:
笑
OMG
烧烤
分段错误(核心转储)
可能是什么问题?我不认为我需要用其他代码来骚扰你们,因为"而#34;循环执行得很好,错误在离开cicle之前就会出现,因为最后一次打印没有显示。
谢谢!
答案 0 :(得分:5)
以下适用于我。也可在http://codepad.org/FZmK4usU
获取#include <stdio.h>
#include <string.h>
int main() {
char line[] = "lol | omg | bbq";
enum{ MAXARGS = 10 };
char const *commandstrings[MAXARGS];
int i = 0;
char * commandstr = strtok(line,"|");
while(commandstr != NULL){
commandstrings[i] = commandstr;
printf("%s \n",commandstrings[ i ]);
i++;
commandstr = strtok(NULL,"|");
}
printf("first parsing complete!");
}