c语言 文件读取调用fgets函数后指针地址不变?
本帖最后由 海淀csy 于 2019-4-5 18:42 编辑/*
代码如下,读取文件,调用fgets函数后打印文件指针的地址,指针值没有变化
那么指针未移动又是怎么读取文件中不同数据的呢?
*/
#include<stdio.h>
#define MAX 1024
int main()
{
FILE *fp; //定义文件指针
char *s;
char buffer;
fp=fopen("a.txt","w"); //创建文本
fputs("bbb\n",fp);
fputs("ccc",fp); //输入文本内容
fclose(fp);
fp=fopen("a.txt","r");
fgets(buffer,MAX,fp);
printf("指针p=%p\n",fp);
printf("%s",buffer);
fgets(buffer,MAX,fp);
printf("指针p=%p\n",fp);
printf("%s",buffer);
}
fgets函数的功能是:从fp所指向的文件中读取长度不超过n-1个字符的字符串,并将该字符串放到字符数组s中。如果操作正确,函数的返回值为字符数组s的首地址;如果文件结束或出错,则函数的返回值为NULL。 910201513 发表于 2019-4-5 18:31
fgets函数的功能是:从fp所指向的文件中读取长度不超过n-1个字符的字符串,并将该字符串放到字符数组s中。 ...
那指针指向的地址都没有改变 为什么会读出下一个字符串的内容呢 函数原型
char *fgets(char *s, int n,FILE *stream)
{
register int c;
register char *cs;
cs=s;
while(--n>0 &&(c = getc(stream))!=EOF)
if ((*cs++=c) =='\n')
break;
*cs ='\0';
return (c == EOF && cs == s) ?NULL :s ;
} 910201513 发表于 2019-4-5 20:53
函数原型
我尝试了使用fgetc函数,结果指针地址还是没有改变,请问这又是为什么! 因为文件指针不是一个指针,
FILE是一个数据结构,储存了你打开的文件的一些信息,FILE* fp是指向这个数据结构的指针,和当前读写位置没有直接的联系
页:
[1]