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