c - fgets 如何从文件中逐行读取?

标签 c fgets

假设我有:

#define CHUNK_SIZE 256

void copy(FILE *input, FILE *output) {
     char buffer[CHUNK_SIZE];
     while (fgets(buffer, CHUNK_SIZE, input) != NULL) {
          fputs(buffer, output);
     }
}

但是在 while 循环中,fgets 获取相同的参数 - 那么它如何知道在 while 的每次迭代中从文件中读取下一行?难道它不会因为总是读取同一行而陷入无限循环吗?

最佳答案

编辑:添加了额外的解释,因为 @KlasLindbäck 指出我的答案并不完全正确

File 是一个包含字段“fd”的结构,该字段是一个整数,标识该文件的操作系统文件描述符,该文件描述符可用于检索您正在读取的文件中的当前位置。如果您想了解有关 File 结构 here 的更多信息和文件描述符here

TL;DR:FILE 结构以某种方式存储它正在读取的位置。

关于c - fgets 如何从文件中逐行读取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33413953/

相关文章:

c++ - c/c++中void指针的使用

c - fgets 或 strtok 错误返回不需要的第三行

c - fgets 从 C 中的输入(键盘)获取 "string"

c - Fgets() 不断跳过第一个字符

c - 为什么在c中以如此奇怪的顺序执行代码?

c - 是否有提供优先队列的 C 库?

c - 如何在另一个函数中使用带有存储的来自一个函数的用户输入的变量?

Clang stdio,找不到 h 文件

c - OpenMP 实现还原

c - 从 stdin c 读取文件名