所以我的代码应该通过命令行查看文本文件
./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
附加到您的临时文件。
我是一名优秀的程序员,十分优秀!