对于重复调用函数fgetc(fp) 下形参fp值是否改变的问题
程序代码:
#include "stdio.h" void main() { FILE *fp; char fname[100],ch; scanf("%s",fname); while((fp=fopen(fname,"r+"))==NULL) scanf("%s",fname); getchar(); ch=fgetc(fp); putchar(ch); printf("%#o\n",fp); //这个是后来加的,验证fp的值到底有没变 ch=fgetc(fp); putchar(ch); printf("%#o\n",fp); //同上 fclose(fp); }
这个代码没什么意义,我只是想知道为什么
ch=fgetc(fp);
while(ch!=EOF)
{
putchar(ch);
ch=fgetc(fp);
}
while(ch!=EOF)
{
putchar(ch);
ch=fgetc(fp);
}
能达到按字符输出fp所指文件文本内容的目的,因为看上去感觉怎么也该是ch=fgetc(fp++)才对呀。。
所以我写了最上面那段代码,明白ch=fgetc(fp);重复使用以后,ch的值相当于fp所指文件文本下一个字符……以此类推。
所以就顺理成章的以为,在调用函数fgetc()之后,形参的指针应该是自增的,于是为了验证,分别在两个ch=fgetc(fp); 之后加了printf("%#o\n",fp);
但是得到的结果是前后的fp值都没有变,相当于说明指针fp没有因为fgtec()的调用而改变。。
这就郁闷了,那么为什么这样的代码还能行得通呢? 我想知道第二段代码为什么能行,或者是我验证的方式错了吗?