文件操作与相关知识

程序设计中,有两类文件:程序文件,数据文件

程序文件:.exe,.obj,或工程之内的文件。

数据文件:从类似text.c中读取文件,写文件

文件名包括三个部分:文件路径+文件主干+文件后缀。

文件指针

一个文件的内容在内存中开辟文件信息区,存在一个结构体struct FILE(指向文件信息区)中,结构体中存着文件指针。

fopen文件打开函数 fopen(文件名)或(相对路径+打开方式),返回值为FILE*

fclose文件关闭函数 fclose(FILE*),传参类型为FILE*

两函数都有失败的可能。

文件的读写

文件的顺序读写

 fputc(int character,pf)即(输入内容,文件地址)

 

 

 sprintf,sscanf前者将格式化数据转化成字符串,后者为将字符串中的数据转化为格式化数据。

 

 fgetc函数读取一次会自动跳到下一个字符。

int main()
{
	FILE*pf = fopen("test.txt", "r");
	if (pf == NULL)
	{
		perror("fopen");
	}
	else
	{
		int ch = fgetc(pf);
		printf("%c\n", ch);//a
		ch = fgetc(pf);
		printf("%c\n", ch);//b
		ch = fgetc(pf);
		printf("%c\n", ch);//c

		//如果继续往下读,必然是d
		//但是我们调整一下,去读取:b
		//fseek(pf, -2, SEEK_CUR);
		fseek(pf, 1, SEEK_SET);
		ch = fgetc(pf);
		printf("%c\n", ch);//b
		printf("%d\n", ftell(pf));
		rewind(pf);
		ch = fgetc(pf);
		printf("%c\n", ch);//a
	}

	return 0;
}

ftell函数是返回相对起始位置的偏移量。

rewind函数可以将文件指针恢复到文件的起始位置,与fseek传参SEEK_SET效果相同。

文本文件和二进制文件

数据在内存中以二进制的形式存储,如果不经转换直接存在文件中就叫二进制文件。

将一个数字的二进制形式的每个字符以ASCII码的形式存储就是文本文件。 

文件读取结束的判定 

 文件读取结束,我们要得知读取结束的原因:

feof:返回真,则是文件读取到了正常的结束标志而结束。

ferror:返回真,则是文件在读取过程中出错了,而结束,属于异常结束。

文件缓冲区  

 

int main()
{
	FILE* pf = fopen("test.txt", "w");
	fputs("abcdef", pf);//先将代码放在输出缓冲区
	printf("睡眠10秒-已经写数据了,打开test.txt文件,发现文件没有内容\n");
	Sleep(10000);//10秒
	printf("刷新缓冲区\n");
	fflush(pf);//刷新缓冲区时,才将输出缓冲区的数据写到文件(磁盘)
	//注:fflush 在高版本的VS上不能使用了
	printf("再睡眠10秒-此时,再次打开test.txt文件,文件有内容了\n");
	Sleep(10000);

	fclose(pf);
	//注:fclose在关闭文件的时候,也会刷新缓冲区
	pf = NULL;
	return 0;
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值