gpt4 book ai didi

c - 有没有办法在 C 中倒带标准输入?

转载 作者:太空宇宙 更新时间:2023-11-04 07:43:28 25 4
gpt4 key购买 nike

所以我的代码应该通过命令行查看文本文件

 ./program < text.txt

这种执行程序的方式对我的目的很重要。

但是在通过它之后,所有其他方法都已经查看了文本文件的末尾。

我试图遍历一个提供的文本文件,但是一旦一个函数读取它一次,可能指针已经停留在文件的末尾并且其他函数不再工作。

所以就有了最基本的函数就是用这个了。一旦我尝试使用相同的 for 循环的任何其他功能,它就不再工作了。我想它是指针,但我还没有成功找到刷新它的方法。

void writeOut()
{
char line[100];
for(; fgets(line, 100, stdin) != NULL;)
{
fprintf(stdout,"%s", line);

}
fprintf(stdout,"\n");
}

我希望能够多次读取同一个文件并能够“刷新”fgets() 的内存。

感谢任何有用的输入

最佳答案

The rewind() and fseek() functions是重新定位流的传统方法支持这样做。并非所有流都支持它,您是否支持不仅取决于您的 C 实现,还取决于您的操作环境和程序启动的具体情况。

我通常倾向于期望与重定向输入相关联的流支持重新定位,因此即使它在您的特定情况下有效,您还是明智地考虑一个更可靠的替代方案。

特别是,您可以创建一个临时文件,将标准输入复制到其中,然后使用该文件。您可以提前执行复制,也可以在执行第一个普通运行时执行复制。如果您需要专门从 stdin 重新读取数据,而不是从您打开的其他流中读取数据,那么您可以使用 freopen()stdin 附加到您的临时文件。

关于c - 有没有办法在 C 中倒带标准输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58670828/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com