【发布时间】:2015-04-03 14:54:31
【问题描述】:
此代码正确地逐行读取文件,将每一行存储在 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 的魔力!
【问题讨论】:
-
如果我没记错的话,是内部处理的。
-
我愿意学习这种内在的魔法!