(初步了解)文件和文件操作

文件作用


(1).将数据进行持久化的保存。

文件分类


(1).程序文件:包括源程序文件(后缀为.c)、目标文件(Windows环境后缀为.obj)、可执行程序(windows环境后缀为.exe).

(2).数据文件:程序运行时读写的数据。

数据文件的分类


(1).二进制文件:数据在内存中以二进制存储,再不加转换地输出到外存的空间中。

(2).文本文件:在外存上以ASCLL字符的形式存储

文件的打开和关闭


(1).标准流:

     1.标准输入流(stdin).在大多数环境中从键盘输入。

     2.标准输出流(stdout).大多数环境中输出至显示器

     3.标准错误流(stderr).大多数环境中会显示到显示器的桌面上。

注:以上三个流的类型是FILE*通常称为文件指针。

(2)文件的打开和关闭:

fopen函数来打开,fclose来关闭。

文件的打开模式:

这里以“wb”为例作为演示使用方法。

#include<stdio.h>

int main()
{
	int arr[5] ={1,2,3,4,5};
	FILE* pf = fopen("data.txt", "wb");
	if (pf == NULL)
	{
		perror("fopen");
		return 1;
	}
	fwrite(arr, sizeof(arr[0]), 5, pf);
	fclose(pf);
	pf = NULL;
	return 0;
}

注:在使用(输入模式)时,在资源库创建一个data.txt。

    在使用(阅读模式)时,data.txt内容不能为空。

文件的顺序读写


注:1.对于fgetc函数,如果成功读取字符,返回的是字符ASCLL码值-char。

如果遇到文件末尾,或者读取失败的时候,返回EOF(-1)。

2.对于fgets函数,如果读取正常,返回的是存储读取到的字符串的字符串字符数组的地址。

如果读取的过程中遇到文件末尾,或者发生错误,返回NULL。

接下来以fgetc函数为例:

#include<stdio.h>

int main()
{

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

while ((ch=fgetc(pf))!=EOF)

文件的随机读写

(1).fseek
int fseek(FILE*stream,long int offset,int origin);
SEEK_SET 文件的起始位置。
SEEK_CUR 文件指针的当时位置。
SEEK_END 文件末尾。

(2).ftell(返回文件相当于起始位置的偏移量)
long int ftell(FILE* stream)
(3).rewind 标准形式:void rewind(Filestream)
void rewind(FILE
stream)
实例:
#include<stdio.h>
int main()
{
FILE* pf = fopen(“test.txt”, “r”);
if (pf == NULL)
{
perror(“fopen”);
return 1;
}
int ch = fgetc(pf);
printf(“%c\n”, ch);
fseek(pf, 4, SEEK_CUR);
ch = fgetc(pf);
printf(“%c\n”, ch);
printf(“%d\n”, ftell(pf));
rewind(pf);
ch = fgetc(pf);
printf(“%c\n”, ch);
fclose(pf);
pf = NULL;
return 0;
}
运行结果为 在这里插入图片描述

文件读取的判断

feof
作用:在读取文件结束时,判断读取结束的原因是否是:遇到文件尾结束。
注:在文件读取过程中,不能用feof函数的返回值直接来判断文件的是否结束。

判断文件读取是否结束,判断返回值是否为EOF(fgetc),或者NULL(fgets)
例如:
1.fgetc
2.fgets(这俩种详情参照上文)
判断二进制文件读取结束判断,返回值是否要小于实际要读的个数。
例如:
fread

文件缓冲区


其功效:操作程序执行会更加高效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fychohchgu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值