strtok(char* str,...)为什么接受char[]而不是char*

eisman 2010-11-06 02:54:36
初学者问题:
把字符串分割为token的函数:
char * strtok ( char * str, const char * delimiters );

文档上的例子是这样的:

char str[] ="- This, a sample string.";
char * pch;
pch = strtok (str," ,.-");
while (pch != NULL) {
printf ("%s\n",pch);
pch = strtok (NULL, " ,.-");
}

如果第一行改为:

char* str ="- This, a sample string.";
//...

编译通过,但运行出错。什么原因?
...全文
123 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
libinfei8848 2010-11-06
  • 打赏
  • 举报
回复
char* str ="- This, a sample string.";
是const而且存放在静态数据区,函数内部修改会造成内存不能wirte
luciferisnotsatan 2010-11-06
  • 打赏
  • 举报
回复
"- This, a sample string.";这个会放在常量区里。就算你用char *指针指向该位置,你也改变不了它的值。

char str[] ="- This, a sample string.";
char *p = str;
这样就可以用p了
aizibion 2010-11-06
  • 打赏
  • 举报
回复
char* str ="- This, a sample string.";
等同于
const char* str ="- This, a sample string.";

这与
char * strtok ( char * str, const char * delimiters );
声明相悖


char str[] ="- This, a sample string.";
可以退化为
char*

所以。。。

33,320

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧