2

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

MyProgram.exe < "data.txt"

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

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

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

4

1 回答 1

4

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

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

rewind(stdin);

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

于 2015-04-04T01:55:54.930 回答