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;
} 展开
#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;
} 展开
展开全部
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;
}
#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;
}
展开全部
把
while(str[i] != ' ')
改成
while(str[i] != ' ' && str[i] != '\0')
因为不改的话复制最后一组字符的时候数组会越界,复制时会越过\0还没有找到' '。
追问
对对对,非常感谢!!
追答
就改这一处就行了,你采纳的那个改的另一处是多此一举,你可以自己分析。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
J=0前的I++去掉,另外,你的不等于空格的那个单引号中按下空格键了吗
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
strcpy(s[k++], temp);
执行这个时,数组越界了!!!
执行这个时,数组越界了!!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询