[求助]便宜无错,第一次运行无问题.第二次运行出错....为什么?

chinayeren 2012-10-18 01:18:52
好奇怪啊以前没有遇到过类似问题...
winxp系统 mingw32的编译器 ide是codeblocks
代码如下.有知道的请指教一二 谢谢拉.....我很迷惑...

int ssq_cpp::ssq_fx()
{
cout<<"准备完成,计算开始......"<<endl;
for(int i=0; i<ysssq.size()-1; i++)
{
string tmp_str[8];
char* tmp_char=new char[strlen(ysssq[i].c_str())+1];
strcpy(tmp_char,ysssq[i].c_str());
cout<<"|"<<tmp_char<<"|"<<endl;
tmp_str[0]=strtok(tmp_char," ");

for(int j=1;j<9;j++) //出错点1
{
tmp_str[j]=strtok(NULL," ");
}
cout<<tmp_str[8]<<endl; //出错点2
}
cout<<"计算完成"<<endl;

return 0;
}


出错点1 和 2 在输出和赋值时出错 原因不明...
ysssq是个vector<string>类型
内部数据结构是
id date int1 int2 int3 int4 int5 int6 int7

每个参数 以 空格分开.我的代码本意是想把每行数据,分解到数组中分别计算....
...全文
76 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
chinayeren 2012-10-18
  • 打赏
  • 举报
回复
恩 是我糊涂了.......谢谢
chinayeren 2012-10-18
  • 打赏
  • 举报
回复
char[9]
是从0开始算的吧?那就是有10个
string[8]不是9个吗?是从1开始算的???
rocktyt 2012-10-18
  • 打赏
  • 举报
回复
tmp_str数组只有8个,越界了
strlen(ysssq[i].c_str())可以改成ysssq[i].length()

顺便char*和string混用看着有点……

64,682

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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