C语言文件操作
不知名小赖 人气:0前言:
文件操作重要吗?
当然重要:如果我们想让自己的程序拥有记忆功能,那就需要把要记忆的信息和数据存入到一个外部文件里,以便下次提取。
一、文件是什么
磁盘上的文件是文件。但在程序设计中,我们一般谈的文件有两种:程序文件、数据文件
- 程序文件:包括源程序文件(后缀 .c),目标文件(后缀 .obj)可执行程序(windows环境后缀为 .exe)。
- 数据文件:文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或则输出内容的文件。
VS编译器上所处理的数据的输入和输出都是以终端为对象的,即从终端的键盘上输入输入数据,运行结果显示到显示器上。但在有时候我们会把数据输出到磁盘上,在需要的时候再从磁盘上把数据读取到内存中使用,这里就是处理的磁盘上的文件。
文件包含三部分:文件路劲+文件名主干+文件后缀
例如:c:\code\test.txt
二、文件类型
根据数据的组织形式数据文件被称为文本文件和二进制文件
- ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码
- 数据在内存中以二进制的形式存储,如果不加转换的输出到外层,就是二进制文件
例如,数1000的存储形式为:
ASCLL码形式: 00110001 00110000 00110000 00110000 00110000 占5个字节
二进制形式存储:00000000 00000000 00100111 00010000 占4个字节
三、文件缓冲区
我们在学习C语言文件操作时我们也要简单的了解一下C语言的文件缓冲区概念:
- 缓冲区(
Buffer
)又称为缓存(Cache),是内存空间的一部分。也就是说,计算机在内存中预留了一定的存储空间,用来暂时保存输入或输出的数据,这部分预留的空间就叫做缓冲区(缓存)。 - 在程序数据区到磁盘之间有输出缓冲区和输入缓冲区,这些有兴趣的可以去深入了解一下
缓冲区是为了让低速的输入输出设备和高速的用户程序能够协调工作,并降低输入输出设备的读写次数。
四、文件指针
缓冲文件系中:关键的概念是“文件类型指针”,简称**“文件指针”**
每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如:文件的名字,状态及文件当前的位置等)。这些信息保存在一个结构体变量中的。该结构体变量是有系统申明的取名:FILE
在使用的vs2013编译器的头文件stdio.h有以下的文件类型声名:
不同c编译器的FILE所包含的内容不完全相同,但是大同小异,
每当打开一个文件的时候,系统会根据文件的情况自动创建一个FILE结构的变量,并 填充其中的信息。
一般都是通过一个FILE的指针来维护这个结构的变量。
FILE* pf;//文件指针变量
定义pf是一个指向FILE类型数据的指针变量,可以使pf指向某个文件的文件信息区(是一个结构体变量)。通过该文件信息区中的信息就可以访问该文件。也就是说,通过文件指针变量能够找到与它关联的文件
五、文件的打开和关闭
文件在读写之前应该先打开文件,在使用结束之后应该关闭文件
编写程序时,在打开文件的同时,都会返回一个FILE的指针变量指向该文件相当于建立了指针与文件的关系。
- fopen 函数打开文件,fclose 来关闭文件
FILE *fopen(const char *filename, const char *mode); int fclose(FILE *stream);
打开文件一般有两种方式:
- 当前路劲下(相对路径)打开文件
- 绝对路径打开
//以读的方式打开 //当前路劲下(相对路径)打开文件test.txt fopen("test.txt", "r"); //绝对路径打开 fopen("E:\\C++file\\file\\test.txt", "r");
打开方式如下:
- “r”(只读) 为输入打开一个已经存在的文本文件
- “w”(只写) 为输出打开一个文本文件
- “a”(追加) 向文件文件尾添加数据
- “rb”(只读) 为输入打开一个二进制文件
- “wb”(只写) 为输出打开一个二进制文件
- “r+”(读写) 为读写打开一个文本文件
- “w+”(读写) 为读写建立一个新的文本文件
- “a+”(读写) 为读写打开一个文本文件
- “rb+”(读写) 为读写打开一个二进制文件
- “wb+”(读写) 为读写建立一个新的二进制文件
- “ab+”(读写) 为读写打开一个二进制文件
注意:
- 用 “r” 方式打开的文件,不能向其输入数据,并且该文件已存在,否则出错;
- 用 “w” 方式打开的文件,只能向该文件输入数据,如果所打开的文件不存在,则在打开时新建一个以指定的名字命名的文件;如果指定文件存在,则在打开时将该文件删去,然后新建一个新的文件;
- 如果函数 fopen 打开文件出错,则fopen返回一个空指针值 NULL;
- 在程序开始运行时,系统自动打开3个标准文件:标准输入(stdin),标准输出(stdout),标准出错输 出(stderr)。如果要使用输入输出终端,则不需要打开,可以直接使用,如fputc(stdout,‘a’);向屏幕输出字符a。
- 以读的形式打开文件文件必须存在
- 以写的形式打开的文件,只能向该文件输入数据,如果所打开的文件不存在,则在打开时新建一个以指定的名字命名的文件;如果指定文件存在,则在打开时将该文件删去,然后新建一个新的文件;
加载全部内容