C程序冻结大于6的字长

时间:2015-05-27 22:56:22

标签: c kernighan-and-ritchie

我正在完成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');
}

1 个答案:

答案 0 :(得分:3)

定义max时,

length[max]未初始化。基本上,您使用的是未分配的内存。