c++中关于strtok函数的问题

charsentence[]="HelloMyFriend"char*token;token=strtok(sentence,"");while(token!=NULL)... char sentence[]="Hello My Friend"
char *token;

token =strtok(sentence," ");
while(token!=NULL){
token=strtok(NULL," ");
cout<<token<<endl;
}
return 0;
}
运行时出错
什么 遇到问题需要关闭 那个对话框

几经调试发现如果把cout<<token<<endl;和token=strtok(NULL," ");
换个位置就不会报错~

琢磨着是不是因为strtok最后一次对sentence进行处理的时候发生什么状况?使得其超出了token的储存范围?
请高手解答~谢谢~

PS:其实本意是向将两次token的值存到另一个string里 比如将“My Friend”存到另一个string里一起输出~
直接赋值的话(string=token)只能输出"Frined"
用strcat的话有连接过去很多垃圾值~……
展开
 我来答
tknkdiger
2007-12-31 · 超过50用户采纳过TA的回答
知道小有建树答主
回答量:161
采纳率:0%
帮助的人:183万
展开全部
几经调试发现如果把cout<<token<<endl;和token=strtok(NULL," ");
换个位置就不会报错~

-----------------------------
原因就是这个,因为最后一次token是NULL
所以cout是遇到一个空指针
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友23f745487
2007-12-31
知道答主
回答量:7
采纳率:0%
帮助的人:6.7万
展开全部
因为token =NULL,cout就会报错了

strtok会返回NULL在找不到token的时候,可以参考msdn

换个顺序不报错是因为while(token!=NULL)这个判断到token为Null退出循环了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式