【C语言进阶】文件操作:文件的打开与文件的读写以及文本文件和二进制文件 |
您所在的位置:网站首页 › c语言文件操作的函数怎么用 › 【C语言进阶】文件操作:文件的打开与文件的读写以及文本文件和二进制文件 |
目录 1、为什么使用文件 2、什么是文件 2.1 程序文件 2.2 数据文件 2.3 文件名 3、文件的打开和关闭 3.1文件指针 3.2文件的打开与关闭 4、文件的顺序读写 4.1 几个函数的区别 5、文件随机读写 5.1 fseek 5.2 ftell 5.3 rewind 6、文本文件和二进制文件 7、文件读取结束的判定 7.1 被错误使用的feof 8、文件缓冲区 1、为什么使用文件我们学习结构体时,写了静态通信录,可以在通讯录中增加、删除数据,此时数据是存放在内存中,当程序退出的时候,数据又要重新录入,当程序退出时,通讯录中的数据就不存在了,等下次运行通讯录,数据又要重新录入。我们想既然是通讯录就应该把信息记录下来,只有我们删除数据时,数据才不复存在。 使用文件主要是为了数据持久化、用户交互和数据交换。文件可以存储数据,即使程序关闭或计算机重启,数据也不会丢失。同时,文件也是程序与用户之间以及不同程序之间交换信息的重要媒介。 2、什么是文件磁盘上的文件就是文件,但在程序设计中,我们一般只谈程序文件和数据文件 2.1 程序文件包括源程序文件(后缀为.c),目标文件(Windows环境后缀为.obj),可执行程序(Windows环境后缀为.exe) 2.2 数据文件文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件 这篇文章所要讨论的是数据文件。以前所处理的数据的输入输出都是以终端为对象的,即从终端的键盘输入数据,运行结果显示到显示器上。其实有时候我们会把信息输出到磁盘上,当需要的时候再从磁盘上把数据读取到内存中使用,这里处理的就是磁盘文件。 2.3 文件名一个文件要有一个唯一的文件标识,以便用户识别和引用。文件名包含3部分:文件路径+文件名主干+文件后缀 比如:c:\code\test.txt 3、文件的打开和关闭 3.1文件指针缓冲文件系统中,关键的概念是“文件类型指针”,简称"文件指针“。 每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文件状态及文件当前的位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是有系统声明的,取名FILE. //文件类型声明 typedef struct _iobuf { char *_ptr; int _cnt; char *_base; int _flag; int _file; int _charbuf; int _bufsiz; char *_temfname; }FILE;不同的C编译器的FILE类型包含的内容不完全相同,但基本差不多。 每当打开一个文件的时候,系统会根据文件的情况自动创建一个FILE结构的变量,并填充其中的信息,使用者不用过于担心。 一般都是通过一个FILE的指针来维护这个FILE结构的变量,这样使用起来更加方便 FILE* pf;//文件指针变量 定义pf是一个指向FILE类型数据的指针变量。可以使用pf指向某个文件的文件信息区(是一个结构体变量)。通过该文件信息区中的信息就能够访问该文件。也就是说,通过文件指针变量能够找到与它相关联的文件 3.2文件的打开与关闭文件在读写之前应该先打开文件,在使用结束之后应该关闭文件。 在编写程序的时候,在打开文件的同时,都会返回一个FILE* 的指针变量指向该文件,也相当于建立了指针和文件的关系。 ANSIC规定使用fopen函数来打开文件,fclose来关闭文件。 //打开文件 FILE* fopen(const char* filename, const char* mode);//filename是文件名,mode是文件打开模式(读或写) //关闭文件 int fclose(FILE* stream); 文件的使用: #include #include #include int main() { FILE* pf=fopen("test.txt", "r");//在对应路径创建文件名为“text”,系统默认扩展名为txt if (pf == NULL) { printf("%s\n", strerror(errno)); return 1; } //读文件 //...... //关闭文件 fclose(pf); pf = NULL; return 0; } 文件使用方式含义如果指定文件不存在"r"(只读)为了输入数据打开一个已经存在的文本文件出错"w"(只写)为了输出数据打开一个文本文件建立一个新文件"a"(追加)向文本文件尾添加数据建立一个新文件"rb"(只读)为了输入数据打开一个二进制文本出错"wb"(只写)为了输出数据打开一个二进制文本建立一个新文件"ab"(追加)向一个二进制文件尾添加数据出错"r+"(读写)为了读和写打开一个文本文件出错"w+"(读写)为了读和写建立一个文本文件建立一个新文件"a+"(读写)打开一个文件,在文件尾进行读写建立一个新文件"rb+"(读写)为了读和写打开一个二进制文件出错"wb+"(读写)为了读和写新建一个二进制文件建立一个新文件"ab+"(读写)为了追加和读新建一个二级制文本建立一个新文件 4、文件的顺序读写 功能函数名适用场景字符输入函数fgetc所有输入流字符输出函数fputc所有输出流文本行输入函数fgets所有输入流文本行输出函数fputs所有输出流格式化输入函数fscanf所有输入流格式化输出函数fprintf所有输出流二进制输入fread文件二进制输出fwrite文件 /举个栗子 #include #include #include int main() { FILE* pf = fopen("text.txt.txt", "w"); if (pf == NULL) { printf("%s\n", strerror(errno)); return 1; } //写文件 char i = 0; for (i = 'a'; i |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |