请教各位大神~关于strtok的参数问题

RuHua27 2015-10-22 11:57:00
为什么不能用指向“字符串“常量的指针呢?具体见代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void print_tokens(char *line)
{
static char whitespace[] = " \t\f\r\v\n";
printf("%s\n", line);
char *token;

for ( token = strtok(line, " "); token != NULL;
token = strtok(NULL, whitespace) )
printf("%s\n", token);
}

int main()
{


char input[] = "aa bb cc dddd fsd123 134 fwe";
print_tokens(input);//如果把这里的input换成"aa bb cc dddd fsd123 134 fwe"程序就会崩溃

return 0;
}
...全文
107 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2015-10-22
  • 打赏
  • 举报
回复
#pragma comment(linker,"/SECTION:.rdata,RW")
//加这句可以让常量区可写,后果自负!
qldsrx 2015-10-22
  • 打赏
  • 举报
回复
因为那个函数会对你的输入字符串进行修改,在分隔符的地方替换字符为\0,如果你给常量字符串,这样的操作是被禁止的,当然要报错了。另外这个函数是多线程不安全的,切勿在多线程应用中使用。

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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