C for循环失败
所以我是C语言新手,我尝试用用户输入的单词长度做一个直方图,我有一个解决方案,但我的第二个for循环总是失败,我编写了5个for循环,每个循环在第二次或第三次迭代后都停止了,我是否遗漏了什么请帮助。这是我的密码C for循环失败,c,loops,for-loop,C,Loops,For Loop,所以我是C语言新手,我尝试用用户输入的单词长度做一个直方图,我有一个解决方案,但我的第二个for循环总是失败,我编写了5个for循环,每个循环在第二次或第三次迭代后都停止了,我是否遗漏了什么请帮助。这是我的密码 #include<stdio.h> int main(){ int i,x,c,r,size; int wa[10]; size=0; for(i=0;i<10;i++){ wa[i]=0; } while
#include<stdio.h>
int main(){
int i,x,c,r,size;
int wa[10];
size=0;
for(i=0;i<10;i++){
wa[i]=0;
}
while((c=getchar())!=EOF){
switch(c){
case' ':{
wa[size]++;
size=0;
break;}
case'\n':{
wa[size]++;
size=0;
break;}
case'\t':{
wa[size]++;
size=0;
break;}
default:{
size++;
break;
}
}
}
for(r=0;r<=10;++r){
printf("%d",r);
for(x=0;x<wa[r];x++){
printf("*");
}
printf("\n");
}
return 0;
}
#包括
int main(){
整数i,x,c,r,大小;
int wa[10];
尺寸=0;
对于(i=0;i第一个for循环将从1开始,第二个for循环将wa[4]替换为wa[r]
您的代码还假定单词长度不会超过10个字符。
- 首先,出于测试目的,从Linux命令行运行时,Ctrl+d模拟EOF
- 其次,for循环在(0-10)之间迭代,而
wa
数组索引的范围在(0-9)之间,这意味着:
对于(x=0;x
呼叫可能导致SEG故障
- 第三,您缺少一个简单的情况,即输入只有一个单词,后面没有空格,例如
abcdEOF
- 第四,在第二段之后,在数组中输入值时,索引是错误的
- 假设最长的单词长度为10char,这很好,但您必须验证
大小
从未超过9的值,或者如果您要更正wa
更新,则超过该值10将由于更新数组中未分配的索引而导致segfault
希望这有帮助为什么wa[4]
特别?我猜default
是在找到字母时执行的,但仍然不清楚。与@coderredoc聚合为什么wa[4]特别。您的默认大小写只增加大小而不是w[]。我尝试编译此代码并运行该程序,但我被无限地困在while循环中。oh wa[4]只是为了测试其余代码是否正常工作…要完成白色循环,请在控制台中按ctrl+c。请显示输入和输出示例,指出您认为输出不正确的原因。是的,我的错误,我使用了wa[4]要测试代码的其余部分是否正常工作,问题是我在while之后编写的每个循环都没有完成。@jaredjosaffhatz有没有任何迹象表明循环已经开始?