【发布时间】:2016-07-12 12:19:14
【问题描述】:
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *file1;
char c;
file1=fopen("find1.txt","r");
if(file1==NULL)
{
printf("\n file doesnt exist\n");
exit(1);
}
else
{
while(1)
{
c=fgetc(file1);
if(feof(file1))
{
break;
}
putc(c,stdout);
}
}
}
我认为这段代码的工作原理是 fgetc() 从文件指针指向的文件中取出一个字符并将该字符放入“c”中。下次它从文件中取出下一个字符并将其放入“c”中。文件指针是否增加并指向下一个字符?还是以任何其他方式处理?
【问题讨论】:
-
file1是一个不透明的指针,它可能指向struct,其中可能包含许多字段,其中一些字段可能已更改。 (例如递增)每个fgetc -
FILE *只是一个指向某个内存位置的指针,它不会被文件上的 RW 操作更改。但文件当前位置在每次读/写后自动递增。 -
@serhio 这意味着我可以在读取文件时跟踪地址?我想在文件中查找单词。
-
C 库的设计有意向您隐藏
FILE的内容。唯一受支持的使用方式是使用 C 库中的函数。查看用于读取和设置文件位置的库函数。 -
看起来对文件定位信息很有用:stackoverflow.com/questions/12119132/…
标签: c file-pointer