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的话有连接过去很多垃圾值~…… 展开
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的话有连接过去很多垃圾值~…… 展开
2个回答
展开全部
几经调试发现如果把cout<<token<<endl;和token=strtok(NULL," ");
换个位置就不会报错~
-----------------------------
原因就是这个,因为最后一次token是NULL
所以cout是遇到一个空指针
换个位置就不会报错~
-----------------------------
原因就是这个,因为最后一次token是NULL
所以cout是遇到一个空指针
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询