2015-09-06 19 views
0

我做了一個程序,然後我用它從它的輸出創建一個文件,現在我想讓幾個程序之一運行重定向該文件(或管道輸出其他方案)。 我用下面的代碼作爲用於測試的第一程序錯誤管道/從窗口中的文件或命令重定向

int main (int argc, char* argv[]) 
{ 

    long long int n = 0; 
    char str[100]; 

    while (str != NULL) 
    { 
     fscanf(stdin,"%s\0", str); 
     printf("%lld\t%s\n", n, str); 

     n++; 
    } 

    return 0; 

} 

程序正確地執行,直到重定向的文件或管道輸出的最後一行,然後保持無限repearing直到我停止與CTRL-C執行(視窗)。 我不知道爲什麼會發生這種情況,我嘗試刷新標準輸入,標準輸出以及所有我想到的並且沒有運氣的東西。

我做錯了或失蹤?

在此先感謝。

+0

'str!= NULL'永遠不會是錯誤的。查看scanf文檔以查看錯誤/流結束條件的情況。 – Mat

回答

0
while (str != NULL) 
{ 
    fscanf(stdin,"%s\0", str); 
    printf("%lld\t%s\n", n, str); 

    n++; 
} 

取代

while (scanf("%s", str) != EOF) 
{ 
    printf("%lld\t%s\n", n, str); 
    n++; 
} 

問題解決了。

1
char str[100]; 
while (str != NULL) 

str被視爲一個指針陣列中的第一個字符,所以其值從不改變,這意味着循環不會終止。

+0

改變條件來檢查scanf的返回值也是一樣的結果。 – SJPRO

+0

檢查爲!= EOF。解決了,謝謝! – SJPRO