我正在完成K& R的第一章,并参加了练习,你应该为某些输入创建一个字长的直方图。我开始尝试使用while循环来创建一个零数组,只要是最长的单词,但是输入单词超过六个字符会导致程序冻结。我对解决方案的兴趣不如我对原因的了解。
#include <stdio.h>
main()
{
int c, i, l, max;
int length[max];
l = max = 0;
while((c = getchar()) != EOF){
if(c != ' ' && c != '\t' && c != '\n'){
++l;
if(l > max)
max = l;
else
;
}
else
l = 0;
}
for(i = 0; i < max; ++i)
length[i] = 0;
for(i = 0; i < max; ++i)
printf("\n%d", length[i]);
putchar('\n');
}
答案 0 :(得分:3)
max
时, length[max]
未初始化。基本上,您使用的是未分配的内存。