2014-04-11 76 views
0

對不起,我之前做過類似的事情,我確信我已經完成了這個複雜的工作,但是有人能幫我理解最新的錯誤嗎?我以前只知道Java,但我對C很熟悉。無法在文件中讀取 - C

我已經嘗試了3種不同的方式從網上搜索,沒有註釋掉的是我更喜歡使用的。它在data.txt中打印出適量的數字,但它只打印出數字1.我認爲在這段時間內的c = scanf會每次給我一個不同的結果。

我也嘗試只讀數字作爲字符,因爲我沒有做任何數學,但我有一堆時髦的符號。

輸入:

./a.out < data.txt中

data.txt中內容: 0 2 2 0 6 1 0 7 4 1 7 5 0 8 2 0 8 9 1 15 13

C文件內容: 的#include 的#include 「queue.h」

int main(void) 
{ 
    /* 
    char c = scanf("%c", &c); 
    while (c!= EOF) 
    { 
     printf("%c", c); 
     c = scanf("%c", &c); 
    }//while 
    */ 



    int c = scanf("%d", &c); 
    while (c!= EOF) 
    { 
     printf("%d", c); 
     c = scanf("%d", &c); 
    }//while 
    printf("\n"); 



    /* 
     char c; 
    //char **argv 
    FILE *infile; 
    infile=fopen(argv,"r"); 
    while (!feof(infile)) 
    { 
     fscanf(infile, "%c", &c); 
     printf("%c", c); 
    } // while 
    fclose(infile); 
    */ 
return 0; 

}

回答

1

您應該使用不同的變量來檢查scanf的結果,而不是存儲讀取的值。正如您現在所做的那樣,您立即用scanf結果覆蓋讀取值。

此外,最好檢查成功而不是檢查EOF,就好像有輸入的文本會進入無限循環。

int x = scanf("%d", &c); 
while (x == 1) 
{ 
    printf("%d", c); 
    x = scanf("%d", &c); 
} 

顯然,這可以濃縮:

while (1 == scanf("%d", &c)) 
    printf("%d", c);