2017-03-16 92 views
0

我很困惑,爲什麼會發生此錯誤。 我的代碼執行罰款,結果是我想要的東西,但是,編譯與命令我的C文件: 「GCC -std = C99 -Wall -o assignment2 assignment2.c」C警告與字符數組:「警告:數組下標具有類型'字符'」

下面是代碼:

enter image description here

下面是輸出錯誤:

enter image description here

我只想用這個,但我敢肯定,它可能有一些原因的埃羅r顯示,也因爲我的任務標記可能想要接受它,如果編譯時出現此警告。

+2

爲什麼'i'一個'char'? –

回答

4

如果使用i一個櫃檯,使用的int代替char

int i = 0; 

這將解決這個問題。

而且,c應該是一個int,因爲fgetc()可以返回EOF這是一個int,和一般的fgetc()返回類型爲int,因此,你應該使用intc了。

你的代碼應該然後

char word[500]; 
int i = 0; 
int c; 

while (((c = fgetc(fp)) != EOF) && (c != '\n')) { 
    word[i++] = (char) c; 
} 
word[i] = '\0'; 
+1

@KeineLust,代碼有未定義行爲,謝謝編輯。 –

+0

噢,我正在嘗試這個以及來自其他在線答案,並最終失去了這個小錯誤。非常感謝您爲我指出這一點。 – jjyj

+2

@jjyj這就是* Stack Overflow *的意思,它很有幫助。但請記住,下次應該發佈實際代碼而不是圖像。 –

-1

i應當進行評估,以便i < 500是fullfilled