加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C中的strtok函数出错

发布时间:2020-12-16 10:19:16 所属栏目:百科 来源:网络整理
导读:我正在使用一个简单的程序来使用strtok函数对字符串进行标记.这是代码 – # include stdio.hchar str[] = "now # time for all # good men to # aid of their country"; //line achar delims[] = "#";char *result = NULL;result = strtok( str,delims );whi
我正在使用一个简单的程序来使用strtok函数对字符串进行标记.这是代码 –

# include <stdio.h>
char str[] = "now # time for all # good men to # aid of their country";   //line a
char delims[] = "#";
char *result = NULL;
result = strtok( str,delims );
while( result != NULL ) {
    printf( "result is "%s"n",result );
    result = strtok( NULL,delims );
}

该程序成功运行.但是,如果将行a更改为

char * str= "now # time for all # good men to # aid of their country";   //line a

strtok函数提供核心转储.我想得到一个解释,我理解为什么会这样?因为从strtok的声明为–char * strtok(char * str1,const char * str2); char * str作为第一个参数应该工作

解决方法

您无法修改字符串文字. The c faq on the subject解释得最好.简而言之,如果你宣布

char *stuff = "Read-only stuff";

你无法修改它.

strtok接受char *的事实与您无法将数组传递给函数的事实有关,您只能传递地址. Another c faq entry可能会有所帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读