为什么strtok不起作用?

时间:2013-12-21 21:07:27

标签: c arrays string substring strtok

代码非常简单。我不明白为什么当我尝试打印pointok2时我的程序崩溃了。也许我没有看到问题,因为我很累或什么的。一点帮助将不胜感激。

Tokmain将始终采用“单词单词”格式。

scanf("%s",&tokmain);
for(i=0;i<50;i++) {
    if (tokmain[i]=='\n') {
        tokmain[i]='\0';
        lettercount=i;
        break;
    }
}
pointok1=strtok(tokmain,delim);
pointok2=strtok(NULL,delim);

puts(pointok1);
puts(pointok2);`

1 个答案:

答案 0 :(得分:1)

scanf()在空格处截断。因此,当您输入“单词单词”时,tokmain将只有“单词”。

尝试

scanf("%49[^\n]s",&tokmain); /*Notice the format string*/

for(i=0;i<50;i++) {
    if (tokmain[i]=='\n') {
        tokmain[i]='\0';
        lettercount=i;
        break;
    }
}
pointok1=strtok(tokmain,delim);
pointok2=strtok(NULL,delim);

puts(pointok1);
puts(pointok2);`