UNE*_*ECS 1 c strtok segmentation-fault
我已经看过其他问题等了,我已经看到你不能在strtok中有一个无法编辑的第一个arg但我不认为我在这个代码中但仍然得到一个seg错误?我使用strtok错了吗?
这段代码是以csv逗号分隔格式获取stdin并从stdin中添加数字然后将它们打印到stdout,ps我让它在令牌不是指针时工作.i+= token;但我得到的随机输出正如我想的那样.
#include <stdio.h>
#include <string.h>
int main(){
char *token, input[256];
int i = 0;
scanf("%s" , input);
token = strtok (input, ",");
while(token != NULL){
token = strtok(NULL, ",");
i += *token;
}
printf("%d\n", i);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
谢谢Lachlan
在某些时候strtok将返回NULL您不会检查:
token = strtok(NULL, ",");
i += *token; /* Will dereference NULL. */
Run Code Online (Sandbox Code Playgroud)
相反,你应该这样做:
while(token != NULL){
i += *token; /* We know `token` isn't NULL. */
token = strtok(NULL, ",");
}
Run Code Online (Sandbox Code Playgroud)
作为旁注,你正在做什么 - 添加字符值 - 几乎没有意义.你可能希望以某种方式转换它们,可能使用strto(u)l.
| 归档时间: |
|
| 查看次数: |
357 次 |
| 最近记录: |