c语言,下面一段代码,vc6 运行时 总是出现“停止工作”,求大神帮忙看看怎么回事~~

#include<stdio.h>#include<string.h>intmain(){charstr[200]="aaaaaaqulilililihellomygod... #include <stdio.h>
#include <string.h>

int main()
{
char str[200] = "aa aa aa qu li li li li hello my god li";
char temp[80], s[80][80];
int num[80] = {0};
int i=0, j = 0, k = 0, n = 0, m;

while(str[i] != '\0')
{
while(str[i] != ' ')
{
temp[j++] = str[i++];
}
temp[j] = '\0';
strcpy(s[k++], temp);
num[n++] = 1;
i++;
j = 0;
}

for(i=0; i < k; i++)
{
printf("%s\n", s[i]);
}

printf("\n");

return 0;
}
展开
 我来答
心中风情4
2013-08-22 · TA获得超过2247个赞
知道大有可为答主
回答量:1779
采纳率:66%
帮助的人:1077万
展开全部
while判断有问题,修改如下:
#include <stdio.h>
#include <string.h>

int main()
{
char str[200] = "aa aa aa qu li li li li hello my god li";
char temp[80], s[80][80];
int num[80] = {0};
int i=0, j = 0, k = 0, n = 0, m;

while(str[i] != '\0')
{
while(str[i] != ' ' && str[i] != '\0') //这里
{
temp[j++] = str[i++];
}
temp[j] = '\0';
strcpy(s[k++], temp);
num[n++] = 1;
if(str[i] == ' ') i++; //这里相应要改
j = 0;
}

for(i=0; i < k; i++)
{
printf("%s\n", s[i]);
}

printf("\n");

return 0;
}
yuantailing
2013-08-22 · TA获得超过2545个赞
知道小有建树答主
回答量:1167
采纳率:92%
帮助的人:656万
展开全部

while(str[i] != ' ')

改成

while(str[i] != ' ' && str[i] != '\0')

因为不改的话复制最后一组字符的时候数组会越界,复制时会越过\0还没有找到' '。

追问
对对对,非常感谢!!
追答
就改这一处就行了,你采纳的那个改的另一处是多此一举,你可以自己分析。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
看灰过来了
2013-08-22 · TA获得超过879个赞
知道小有建树答主
回答量:508
采纳率:83%
帮助的人:295万
展开全部
J=0前的I++去掉,另外,你的不等于空格的那个单引号中按下空格键了吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
CraZy_小猪
2013-08-22 · TA获得超过792个赞
知道小有建树答主
回答量:871
采纳率:55%
帮助的人:275万
展开全部
strcpy(s[k++], temp);
执行这个时,数组越界了!!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式