C语言——文件相关函数

首先我们对比一组函数:

scanf:按照一定的格式从键盘中输入数据

printf:按照一定的格式把数据打印(输出)到屏幕上

这两个函数适用于标准输入/输出流的格式化的输入/输出语句

fscanf:按照一定的格式从输入流(文件/stdin)输入数据

fprintf:按照一定的格式从输出流(文件/stdout)输出数据

这两个函数适用于所有的输入/输出流的格式化输入/输出语句

sscanf:从字符中按照一定的格式读取出格式化的数据

sprintf:把格式化的数据按照一定的格式转换成字符串 


 一、文件的随机读写

1. fseek:根据文件指针的位置和偏移量来定位文件指针

int fseek(FILE* stream, long int offset, int origin);

通过一下例子了解该函数的使用: 

int main()
{
	FILE* pf = fopen("test.txt", "r");
	if (pf == NULL)
	{
		perror("fopen()");
		return 1;
	}

	//假定test.txt内存储的内容为:abcdef

	//读文件
	fseek(pf, 2, SEEK_SET);	//从文件开始位置开始偏移2个,下面将会读取到c
	int ch = fgetc(pf);
	printf("%c\n", ch);	//c
	fclose(pf);

	return 0;
}

2. ftell:返回文件相对于起始位置的偏移量

long int ftell(FILE* stream);

 例子:

int main()
{
	FILE* pf = fopen("test.txt", "r");
	if (pf == NULL)
	{
		perror("fopen()");
		return 1;
	}

	//假定test.txt内存储的内容为:abcdef

	//读文件
	fseek(pf, 2, SEEK_SET);	//从文件开始位置开始偏移2个
	int ch = fgetc(pf);
	printf("%c\n", ch);	//c

	//返回当前文件偏移量
	int pos = ftell(pf);
	printf("%d\n", pos);	//由于上方读取到c,从a-b-c一共偏移了3个字符

	fclose(pf);

	return 0;
}

二、文件读取结束的判定

        在C语言中我们通常会使用feof函数来判定文件读取的结束,然而对该函数的使用过程中,由于大部分人还没有搞清楚如何正确使用该函数,所以会使用错误,下面将介绍如何正确使用!

牢记:在文件读取过程中,不能用feof函数的返回值直接用来判断文件时候结束。

  • 文本文件读取时候结束,根据返回值进行判断

        用fgetc判断返回值是否为EOF

        用fgets判断返回值是否为NULL

  • 二进制文件的读取结束判断,判断返回值是否小于实际要读的个数

        例如:用fread判断返回值是否小于实际要读的个数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值