2016-02-03 33 views
1

爲什麼fscanf在這段代碼中給我一段段錯誤?fscanf將段落讀入數組

int main(int argc, char *argv[]) 
{ 
    FILE *file = fopen(argv[1], "r"); 
    int n = atoi(argv[2]); 

    char *words[n]; int i=0; 
    while ((fscanf(file, "%s ", &words[i])) != EOF) i++; 
} 
+1

你覺得'&words [i]'是什麼? – immibis

回答

1

因爲您沒有爲您的單詞[i]分配內存。它們只是指向隨機存儲器地址的指針。

+0

哦對。我需要使用'new'。對不起,我是一個新手! –

+0

確實你應該做char'** words = new char [n] [m];',其中m是你輸入的最大長度。 – Holsety

+1

我用'm = 20'試過並得到了'錯誤:無法在初始化中將'char(*)[20]'轉換爲'char **'。 –