c++的strtok函数

#include<iostream>#include<string.h>usingnamespacestd;intmain(){intkeynum=0;char*key;... #include<iostream>
#include <string.h>
using namespace std;
int main()
{
int keynum=0;
char *key;
cout << "请输入关键值n的个数" << endl ;
cin>>keynum;
key=new char[keynum];

cout << "请输入一行关键值,并用“;”分隔" << endl ;
cin>>key;

const char *d = ";";
char *p;
p = strtok(key,d);
while(p)
{
printf("%s\n",p);
p=strtok(NULL,d);
}
system("pause");
return 0;

}
然后报错了 是strtok函数出了问题,char *strtok(char *str, const char *delim);我要怎么修改key或者什么才能运行成功啊
展开
 我来答
春误双卿
2014-02-25 · TA获得超过725个赞
知道小有建树答主
回答量:580
采纳率:91%
帮助的人:456万
展开全部
strtok函数在执行的时候,会修改原本的字符串,你使用char *key,那么key指向的内容保存在文字常量区,该区的内容是不能修改的,所以会出现内存错误。你只要吧char *key改成char key[1024],写一个大一点的数组就可以了
神璐
2014-02-25 · 超过16用户采纳过TA的回答
知道答主
回答量:63
采纳率:0%
帮助的人:35.5万
展开全部
代码没有出错,我这里能正常运行,不过你在输入的keynum大长度要能装得下后面输入的字符串的长度,否则在程序运行玩的时候,内存释放的时候导致程序的溢出。报错!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式