目录
前言
本章我们学习一下文件操作相关的知识
一、文件介绍
什么是文件呢?磁盘(硬盘)上的文件就是文件,但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类)
程序文件:
程序文件包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows 环境后缀为.exe)
数据文件:
文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件
本章讨论的是数据文件
文件名:
文件类别:
数据文件又可以分为文本文件和二进制文件
文本文件即是数据在内存中经过转换由二进制形式转换为ASCII码值形式再输出到外存设备中形成的文件
二进制文件即是数据不经过任何转换直接输出到外存中形成的文件
二、文件的打开和关闭
流的概念:
我们程序的数据需要输出到各种外部设备,也需要从外部设备获取数据,不同的外部设备的输入输出操作各不相同,为了方便程序员对各种设备进行方便的操作,我们抽象出了流的概念,我们可以把流想象成流淌着数据的河
标准流:
C语言程序在启动的时候,默认打开了3个流:
如何打开和关闭文件:
我们在使用文件之前应该先打开文件,使用结束之后关闭文件
ANSIC规定,用fopen函数来打开文件,用fclose函数来关闭文件
mode表示文件的打开模式,下面是常用的文件打开模式:
三、文件的顺序读写
顺序读写函数介绍
上面说的适用于所有输入流一般指适用于标准输入流和其他输入流(如文件输入流);所有输出流一般指适用于标准输出流和其他输出流(如文件输出流)
在下一章会详细讲解各个函数的使用
四、文件的随机读写
当我们需要对指定位置的数据进行读写操作的时候,我们就需要用到文件的随机读写函数,包括fseek,ftell,rewind三个函数,也会在下一章详细讲解
五、文件读取结束的判定
判断文件读取结束的方法:
文本文件
1、看getc返回值是否为EOF(-1),是则结尾
2、看gets返回值是否为NULL,是则结尾
二进制文件
1、判断返回值是否小于实际要读的个数,是则结尾
feof:
feof的作用是在文件读取结束的时候,判断文件读取结束的原因是否为读到文件末尾
ferror:
ferror的作用是在文件读取结束的时候,判断文件读取结束的原因是否为遇到读取错误
举例:
int main()
{
FILE* pf = fopen("test.txt", "r");
if (pf == NULL)
{
perror("fopen");
return 1;
}
//读取
int ch = 0;
while ((ch = fgetc(pf)) != EOF)
{
printf("%c\n", ch);
}
//判断是什么原因导致读取结束的
if (feof(pf))
{
printf("遇到文件末尾,读取正常结束\n");
}
else if (ferror(pf))
{
perror("fgetc");
}
return 0;
}
本章到这里就结束啦,希望各位小伙伴可以点个关注,支持一下阿鹿,大家的鼓励是我前进的第一动力,3Q~