2015-05-27 65 views
0

我工作到K & R的第一章,來到你應該在哪裏創建字長的柱狀圖一些輸入練習。我開始嘗試使用while循環來創建一個只有最長單詞的數組,但輸入的單詞超過六個字符會導致程序凍結。我對解決問題的興趣不大,但我知道原因。C程序凍結的字長度大於6

#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

如何這甚至編譯?數組的大小未初始化。 – CroCo

回答

3

max在定義了length[max]時未初始化。基本上,你使用未分配的內存。

+0

好的,所以我在定義max的循環之後初始化長度[max],並且它完美地工作。這是否意味着在6個字符之後該程序試圖進入一些不被允許或不被允許的記憶? – Xochozomatli

+0

@Fittesbane - 我猜,但它總是很難說,當你有緩衝區溢出。 – Amit