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



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

MyProgram.exe < "data.txt"

然后在我的代码中使用getchar()scanf()来读取重定向的输入。然而,由于这是一个重定向文件,我不能使用C文件指针来倒带缓冲区。

(我想计算任意大小的文件中的行数,以便初始化数组,然后我想使用getchar()和/或scanf()重新读取文件)。

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

然而,由于这是一个重定向文件,我不能使用c文件指针来倒带缓冲区。

当然可以!这真的很容易。当一个文件被重定向到标准输入时,stdin就是一个文件,所以你可以像对待其他文件一样对待它:

rewind(stdin);

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

最新更新