我使用终端中的<
I / O重定向将一个文本文件输入到我的C程序中:
MyProgram.exe < "data.txt"
然后在我的代码中使用getchar()
和scanf()
来读取重定向的输入。但是,由于这是一个重定向文件,我无法使用C文件指针来回放缓冲区。
(我想计算一个任意大小的文件中的行数,这样我就可以初始化一个数组,然后我想用getchar()
和/或scanf()
重新读取该文件
使用重定向输入时如何实现倒带或刷新?
答案 0 :(得分:4)
但是,由于这是一个重定向文件,我无法使用c文件指针来回放缓冲区。
当然可以!它真的很容易。当文件被重定向到标准输入时,stdin
是一个文件,因此您可以像处理任何其他文件一样对待它:
rewind(stdin);
但请记住,这只有在标准输入从文件重定向时才有效。如果标准输入来自终端或管道(例如cat file.txt | myapp
),它将无法工作。