c文件操作函数 ftell,fgetc,fseek,fread及其注意事项 一次讲全

本文详细介绍了C语言中的文件操作函数ftell, fgetc, fread和fseek的使用。ftell用于获取文件指针当前位置,fgetc用于读取文件字符,fread用于批量读取文件数据,而fseek则用于移动文件指针到指定位置。通过示例代码展示了这些函数的实际应用和效果。
摘要由CSDN通过智能技术生成


前言

函数功能简要介绍:

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);
}

二、运行结果

运行结果

总结

提示:这里对文章进行总结:

  1. fgetc: ①.读取当前位,②.向后移动一位
    注: 当读取的当前位为EOF时,不会再向后移动一位

  2. fread(b,1,5,fp); //fread(buffer,size,count,file*):从fp中读取5个大小为1的字符送入b

  3. fseek(fp,0,SEEK_END): 文件指针指向EOF

   ftell():0 1 2 3 4  5
      file:1 2 3 4 5 EOF
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值