gpt4 book ai didi

c - fgets() 如何跟踪它在哪一行?

转载 作者:行者123 更新时间:2023-12-02 07:26:16 26 4
gpt4 key购买 nike

此代码正确地逐行读取文件,将每一行存储在 line[] 中并打印出来。

int beargit_add(const char* filename) {
FILE* findex = fopen(".beargit/.index", "r");

char line[FILENAME_SIZE];
while(fgets(line, sizeof(line), findex)) {
strtok(line, "\n");
fprintf(stdout, "%s\n", line);
}
fclose(findex);
return 0;
}

但是,我很困惑为什么在 while 循环中使用 fgets() 实际上是逐行读取文件的。在学习了 Python 和 Java 之后,我是 C 的新手。

由于对 fgets() 的每次调用都是独立的,所以每次调用它时,C 在哪里记住它当前在哪一行?我认为这可能与更改值 FILE* index 有关指向,但您将指针按值传递给 fgets(),因此无法对其进行修改。

非常感谢任何帮助理解 C 的魔力!

最佳答案

这不是 fgets 跟踪,findex为你做这件事
findexFILE类型,其中包括有关打开文件的信息,例如文件描述符、文件偏移量
FILE是OS中I/O的封装。

更多关于:FILE

Object type that identifies a stream and contains the information needed to control it, including a pointer to its buffer, its position indicator and all its state indicators.



而偏移量是为了跟踪文件,每次读取文件时,都是从偏移量开始。所有这些工作都是由 FILE 完成的,它为您和 fgets

更多关于偏移的信息 offset wiki

关于c - fgets() 如何跟踪它在哪一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28315385/

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