首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >strtok() seg错误

strtok() seg错误
EN

Stack Overflow用户
提问于 2012-04-13 16:18:17
回答 2查看 376关注 0票数 1

我已经查看了其他问题等,我已经看到你不能在strtok中有一个无法编辑的第一个参数,但我不认为我在这段代码中有,但仍然得到一个seg错误??我是不是用错了strtok?

此代码将获取csv逗号分隔格式的stdin,并将stdin中的数字相加,然后将其打印到stdout,p.s.当token不是指针的时候,我让它工作了。i+= token;,但我得到的是随机输出,我想是这样的。

代码语言:javascript
复制
#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;
    }

谢谢Lachlan

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-13 16:19:49

在某些情况下,strtok会返回NULL,您不会检查它:

代码语言:javascript
复制
token = strtok(NULL, ","); 
i += *token; /* Will dereference NULL. */

相反,你应该做的是:

代码语言:javascript
复制
while(token != NULL){
    i += *token; /* We know `token` isn't NULL. */
    token = strtok(NULL, ","); 
}

顺便说一句,你正在做的事情--添加字符值--意义不大。您可能希望以某种方式转换它们,可能是使用strto(u)l

票数 7
EN

Stack Overflow用户

发布于 2012-04-13 16:21:26

在执行i+=*token之前,您需要将字符串转换为整数,看看strtol等将字符串转换为整数的函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10137453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档