2017-03-25 133 views
0

我正在嘗試對一些數據進行分析,並且正在構建一些我希望用管道鏈接在一起的工具。C讀取管理文件的內容

cat file.dat | ./tool | ./tool2 ...

但我不知道該如何解讀數據的管道。我知道它是通過stdin進入的,但我完全可以等待文件結束。所以我想我在尋找這樣的事情:

long value; 
while(scanf("%ld\n",&value)){ 
    value2 = do_something(value); 
    printf("%ld\n",value2); 
} 
return 0; 

但scanf函數,從標準輸入中「空」是什麼這樣做的正確方法時不返回0?

回答

1

函數scanf返回EOF當它到達文件的結尾。您可以使用這樣的代碼以檢查:

while (1) { 
    long value; 
    int ret = scanf("%ld\n", &value); 
    if (ret == EOF) { 
     break; 
    } 
    printf("%ld\n", value); 
} 

有關詳細信息,請參閱docs