二进制文件&文本文件~文件操作函数的区别

本文介绍了二进制文件与文本文件的区别,重点讲解了文件操作函数fopen、fclose和fseek的使用。fseek用于重定位文件指针,其fromwhere参数可指定定位起点。读写函数中,二进制文件使用fread和fwrite,文本文件使用fgets、fputs、fgetc和fputc。文章还提及了fscanf和fprintf,并提供了一个深入解析二进制与文本文件区别的博客链接。

共同函数

fopen() ,fclose()都是通用的,还有fseek(),不过fseek在文本文件里尽量少用
功 能: 重定位流上的文件指针
用 法: int fseek(FILE *fp, long offset, int fromwhere);
描 述: 函数设置文件指针fp的位置。如果执行成功,fp将指向以fromwhere为基准,偏移offset个字节的位置。如果执行失败(比如offset超过文件自身大小),则不改变fp指向的位置。
fromwhere参数有三种,0是文件开头,1是文件当前位置,2是文件末尾。
“偏移量”是long型数据,它表示位置指针相对于“起始点”移动的字节数。 如果位移量是一个正数,表示从“起始点”开始往文件尾方向移动;如果是负数,则表示从“起始点”开始往文件头方向移动。
返回值: 成功,返回0,否则返回其他值。
例1:fseek(fp,0,2);文件指针fp定位到文件末尾,偏移0个字节 ;
例2:fseek(fp,2L,0);文件开头偏移2个字节,写入(会覆盖原来位置的数据)fp的内容;
下面是fseek()的用法示例:(输出bmp图片文件的长度)

#include <stdio.h>
#include <stdlib.h>
int main()
{
	FILE *fp1;
	unsigned char *f;
	long L;
	fp1=fopen("d:\\6.bmp","rb");
	fseek(fp1,0,2);
	L=ftell(fp1);
	f=(unsigned char*)malloc(L);
	rewind(fp1);
	fread(f,L,1,fp1);
	printf("%ld\n",L);
	fclose(fp1);
	return 0;
}

读写函数

二进制文件

文件的读写函数分别是fread(),fwrite()
调用形式:

  • fread(buffer,size,count,fp);
  • fwrite(buffer,size,count,fp);

参数:
buffer:读入或输出数据的地址;
size:读写输入时,每组数据的大小;
cout:读写数据的次数;
fp:文件指针;
函数功能:一次读取一组数据,可以读取count次;

文本文件

读写函数分别是fgets(),fputs()☞字符串读写操作
或者是fgetc(),fputc()☞字符读写操作
调用形式:fgets(str,n,fp)
函数参数:
n为要求得到的字符串个数,但只从fp指向的文件输入n-1个字符,然后最后加一个‘\0’字符,因此共得到n个字符的字符串,把他们放在字符数组str中。n可选。如果在读完n-1个字符之前,遇到换行符或EOF,读取结束。
还有fscanf(),fprintf()
例:fscanf(fp,"%s%d%lf",a,&b,&c);
最后文末附上一个大佬的关于二进制文件和文本文件的区别详细博客地址,欢迎大家膜拜!!!(https://blog.youkuaiyun.com/colourful_sky/article/details/80334250)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值