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