c - 为什么 strtok 不起作用?

标签 c arrays string substring strtok

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

Tokmain 将始终采用“word word”格式。

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);`

最佳答案

scanf() 在空格处截断。所以,当你输入“word word”时,tokmain只会有“word”。

尝试

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);`

关于c - 为什么 strtok 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20723559/

相关文章:

php - 使用 PHP 从文本区域数据生成 HTML 表

string - Grails使用字符串值中的逗号将String转换为Map

c - 如何识别用户输入的字符串中的所有元音

r - 如何在 R 中的循环中连接向量

C - 哈希表键的链表

c++ - 在 C/C++ 中强制转换有什么问题?

c - 使用 GraphicsMagick C API,未知类型图像编译错误

c - 在Linux上运行C语言程序时遇到问题

javascript - 在 JavaScript 中循环读取数组值

objective-c - 当我尝试在函数中返回此数组时,为什么会出现错误 "Array initializer must be an initializer list"?