前言
函数功能简要介绍:
ftell:返回当前文件指针所指向的位置
fgetc:从文件中读取一个字符
fread:读取fp中count个size大小的数据到buffer中
fseek:把fp的文件读写位置指针移到指定的位置.
提示:以下是本篇文章正文内容,下面案例可供参考
一、代码
#include <stdio.h>
int main(){
int position,position1,position2;
char c;
FILE * fp=fopen("1.txt","w");
char a[5]={'1','2','3','4','5'};
char b[5];
for(int i=0;i<5;i++){
fprintf(fp,"%c",a[i]);
}
fclose(fp);
fp=fopen("1.txt","r");
position=ftell(fp);
printf("\nopen location=%d\n",position);
fread(b,1,5,fp);// fread(buffer,size,count,file*):从fp中读取5个大小为1的字符送入b
for(int i=0;i<5;i++){
//TODO
printf("%c",b[i]);
}
position=ftell(fp);
printf("\nafter fread location=%d\n",position);//5
fseek(fp,0,SEEK_END); //到EOF location=5
position=ftell(fp);
printf("\nafter fseek_end location=%d\n",position);
//总结:
// location:0 1 2 3 4 5
// file :1 2 3 4 5 EOF
fseek(fp,0,SEEK_SET);
while((c=fgetc(fp))!=EOF){
printf("%c,",c);
}
printf("\nafter print location=%d\n",ftell(fp)); // 5
fseek(fp,2,SEEK_SET);
position=ftell(fp);
printf("\nafter fseek_SET 2 location=%d\n",position);// 3
fseek(fp,0,SEEK_SET);
position1=ftell(fp); //0
c=fgetc(fp); // fgetc:1.读取当前位,2.向后移动一位 注: 当读取的当前位为EOF时,不会再向后移动一位
position2=ftell(fp); //1
printf("\ngo start location=%d and do a fgetc char=%c , location=%d\n",position1,c,position2); //location1=0,char=1,location=1
position1=ftell(fp); //1
c=fgetc(fp); // fgetc:1.读取当前位,2.向后移动一位 注: 当读取的当前位为EOF时,不会再向后移动一位
position2=ftell(fp); //2
printf("\nlocation1=%d and do a fgetc char=%c , location2=%d\n",position1,c,position2); //location1=1,char=2,location=2
fclose(fp);
}
二、运行结果
总结
提示:这里对文章进行总结:
-
fgetc: ①.读取当前位,②.向后移动一位
注: 当读取的当前位为EOF时,不会再向后移动一位 -
fread(b,1,5,fp); //fread(buffer,size,count,file*):从fp中读取5个大小为1的字符送入b
-
fseek(fp,0,SEEK_END): 文件指针指向EOF
ftell():0 1 2 3 4 5
file:1 2 3 4 5 EOF