2013-02-02 46 views
3

有以下功能:龜etc總是返回值1

void readAndPrint(FILE * f) { 
    int c; 

    while(c = fgetc(f) != EOF) { 
     printf("%d", c); 
    } 
} 

在我用下面的代碼來使用上述功能的主要()體:

FILE * pFile; 

pFile=fopen ("myfile.txt","r"); 

readAndPrint(pFile) 

;

無論我放入myfile.txt,程序都會打印出來。 例如,對於abc,打印出111。

我知道函數中的c應該聲明爲int以正確地將它與EOF進行比較。另外,我希望打印出文本文件中每個字符的ASCII集合中的int代碼(對於a,...)爲97。我無法弄清楚爲什麼它打印出'一個'...你知道原因嗎?先謝謝你。

回答

7

(c = fgetc(f) != EOF) - 這裏先fgetc(f) != EOF這種情況正在發生,結果10被分配到c。始終條件檢查返回TRUE1)或FALSE0)。

while((c = fgetc(f)) != EOF)

+0

當然!!!謝謝:) – Prz3m3k