各位明白文件的请进来看看

来源:百度知道 编辑:UC知道 时间:2024/09/25 17:16:14
我还认为文件指针跟其他的指针有着相同的特性 但是今天做了个实验发现,其特性与其他文件的指针有一个地方并不相同
假如我定义了char *p1,*p2;
假如p2指向一个10空间的头地址位置在1,然后在进行p1=p2的操作
再对p1向后移动3次也就是说现在p1在4的位置上p2仍然在1的位置上
这是普通变量指针的特性
但是今天在做题的时候发现文件的指针却不是这样
FILE *p1 *p2
重复上面char的操作然会会发现p1移动p2也跟着移动即使不对p2进行任何操作,p2也会移动
一下是验证程序
#include<stdio.h>
#include<stdlib.h>
main()
{
FILE *fp,*pf;
char ch,cch;
fp=fopen("f:\\123.txt","r");
pf=fp;
cch=fgetc(pf);
while(cch!=' ')
cch=fgetc(pf);
ch=fgetc(fp);
printf("%c",ch);
}
f:\\123.txt里的文件内容是wo ai bei jing tian an mei
最后得到的答案是a
pf指向fp

当然和一般指针不一样了,我们称它为"文件指针",并不是指它就直接指向文件中某个位置.你DEBUG看一下就知道了,文件指针指向的是一个结构,这个结构里面包含了正在处理的文件的相关信息,因此,你让pf=fp后,pf也指向了同一个结构,因此对pf和fp的操作,在本质上都是一样的.