首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >strtok() -分割故障

strtok() -分割故障
EN

Stack Overflow用户
提问于 2012-11-03 11:43:28
回答 1查看 4K关注 0票数 0

可能重复: 给出分割故障

我尝试使用strtok函数在许多令牌中拆分字符串,但在本例中它将返回一个seg。错误错误。我哪里错了??

代码语言:javascript
复制
#include <stdio.h>
#include <string.h>

int main(int argc, char** argv){
    int i=0;
    char * string = "HI:HOW:ARE:YOU:?", *tmp;

    while(1){
        if(i==0) tmp=strtok(string,":");
        else tmp=strtok(NULL,":");
        if(tmp==NULL) break;
        printf("%s\n",tmp);
        i++;
    }
    return 1;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-03 11:54:23

变化

代码语言:javascript
复制
char * string = "HI:HOW:ARE:YOU:?"

代码语言:javascript
复制
char string [] = "HI:HOW:ARE:YOU:?"

使用char字符串[],您有一个数组,char *有一个指针。当您声明一个数组时,它将请求空间来分配字符串的大小。char *字符串创建指向文字字符串的指针。

char *string的问题在于不应该更改点,因为字符串文本通常存储在只读内存中,从而导致未定义的行为33

(有关更多细节,请阅读此https://www.securecoding.cert.org/confluence/display/seccode/STR30-C.+Do+not+attempt+to+modify+string+literals )

因此,由于使用strtok,字符串的内容将被修改并分解为较小的字符串(令牌),因此会出现问题。

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

https://stackoverflow.com/questions/13208828

复制
相关文章

相似问题

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