我正在尝试对某些数据进行分析,而我正在构建一些我希望与管道链接在一起的工具。
cat file.dat | ./tool | ./tool2 ...
但我不确定如何读取数据中的管道。我知道它是通过stdin进入的,但我可以等到文件结束。所以我想我正在寻找这样的事情:
long value;
while(scanf("%ld\n",&value)){
value2 = do_something(value);
printf("%ld\n",value2);
}
return 0;
但是当stdin是"空"时,scanf不会返回0。这样做的正确方法是什么?
答案 0 :(得分:1)
函数scanf
在到达文件末尾时返回EOF
。您可以使用这样的代码来检查:
while (1) {
long value;
int ret = scanf("%ld\n", &value);
if (ret == EOF) {
break;
}
printf("%ld\n", value);
}
有关详细信息,请参阅docs。