如何在C中重用(倒带)重定向文件

时间:2015-04-04 00:34:06

标签: c input flush io-redirection rewind

我使用终端中的< I / O重定向将一个文本文件输入到我的C程序中:

MyProgram.exe < "data.txt"

然后在我的代码中使用getchar()scanf()来读取重定向的输入。但是,由于这是一个重定向文件,我无法使用C文件指针来回放缓冲区。

(我想计算一个任意大小的文件中的行数,这样我就可以初始化一个数组,然后我想用getchar()和/或scanf()重新读取该文件

使用重定向输入时如何实现倒带或刷新?

1 个答案:

答案 0 :(得分:4)

  

但是,由于这是一个重定向文件,我无法使用c文件指针来回放缓冲区。

当然可以!它真的很容易。当文件被重定向到标准输入时,stdin是一个文件,因此您可以像处理任何其他文件一样对待它:

rewind(stdin);

但请记住,这只有在标准输入从文件重定向时才有效。如果标准输入来自终端或管道(例如cat file.txt | myapp),它将无法工作。