C语言读写文件大全 之 文件的创建、打开与关闭
来源:互联网 发布:网络广告语 红酒 编辑:程序博客网 时间:2024/05/18 18:53
前面我们了解到标准I/O库函数的文件有两个处理方式:缓冲文件系统和非缓冲文件系统。由于标准的ANSI决定不采用非缓冲文件系统,而只采用缓冲文件系统,即既使用缓冲文件系统处理文本文件,也使用它来处理二进制文件。也就是将缓冲文件系统扩充为可以处理二进制文件。
缓冲系统自动地在内存区为每个正在使用的文件开辟一个缓冲区,文件的存取都是通过缓冲区进行的。缓冲区相当于一个中转站,它的大小由具体的C版本规定,一般为512字节。当从内存向磁盘输出数据时,先将数据送到内存缓冲区,待缓冲区装满后,再一起送到磁盘文件保存;当从磁盘文件读入数据时,则一次从磁盘文件中将一批数据输入到内存缓冲区,然后再从缓冲区逐个地将数据送到程序数据区。
1、文件的创建与打开
打开文件实际上是建立文件的各种有关信息,并使文件指针指向该文件,以便进行其它各种操作。关闭文件则是断开指针与文件之间的联系,也就禁止再对该文件进行操作。关闭文件则是断开指针与文件之间的联系,也就禁止再对该文件进行操作。
ANSIC规定了标准输入输出函数库,用fopen()函数来实现打开文件。该函数是指针型函数,调用后返回文件类指针。有两个函数参数,都是字符型指针。
需要头文件:#include<stdio.h>
函数的原型:FILE* fopen(char *filename,char*mode)
函数参数: filename,字符串形式表现的文件名,这个字符串可以是一个合法的带有路径的文件名;mode,对文件的操作模式,如下表所示。表 1 文件操作模式
类型
含义
文件不存在时
文件存在时
r
以只读方式打开一个文本文件
返回错误标志
打开文件
w
以只写方式打开一个文本文件
建立新文件
打开文件,原内容清空
a
以追加方式打开一个文本文件
建立新文件
打开文件,只能从文件尾向文件追加数据
r+
以读/写方式打开一个文本文件
返回错误标志
打开文件
w+
以读/写方式建立一个新的文本文件
建立新文件
打开文件,原文件内容清空
a+
以读/写方式打开一个文本文件
建立新文件
打开文件,可从文件中读取或往文件中写入数据
rb
以只读方式打开一个二进制文件
返回错误标志
打开文件
wb
以只写方式打开一个二进制文件
建立新文件
打开文件,原文件内容清空
ab
以追加方式打开一个二进制文件
建立新文件
打开文件,从文件尾向文件追加数据
rb+
以读/写方式打开一个二进制文件
返回错误标志
打开文件
wb+
以读/写方式打开一个新的二进制文件
建立新文件
打开文件,原文件内容清空
ab+
以读/写方式打开一个二进制文件
建立新文件
打开文件,可从文件读取或往文件中写入数据
函数返回值:调用成功则返回指向被打开文件的文件指针。否则,返回NULL。通常我们通过函数的返回值来判断函数调用是否成功。
例:文件的打开
#include <stdio.h>#include <stdlib.h>main(){ FIEL* pFile ; if(pFile = fopen("file.c", "r") == NULL) { printf("File open failed… \n"); exit(0); } else { printf("File open successful… \n"); fclose(pFile); }}
对于文件使用方式有以下几点需要说明的:
(1) 文件使用方式由r、w、a、t、b、+六个字符拼成,各字符的含义是 :r(read)读 w(write)写a(append)-追加t(text)-文本文件,可省略不写b(binary)-二进制文件+读和写
(2) 用“r”打开一个文件时,该文件必须已经存在,且只能从该文件中读出。
(3) 用“w”打开的文件只能向该文件写入。若打开的文件已经存在,则将该文件删除,重建一同名新文件;若打开的文件不存在,则以指定的文件名建一新文件。
(4) 以“a”方式打开的文件,主要用于向其尾部添加(写)数据。此时,该文件应存在,打开后,位置指针指向文件尾。如所指文件不存在,则创建一个新文件。
(5) “r+”、“w+”、“a+”方式打开的文件,既可以读入数据,也可以输出数据。“r+”方式时,文件应存在。“w+”方式是新建文件(同“w”方式),操作时,应先向其输出数据,有了数据后,也可读入数据。而“a+”方式,不同于“w+”方式,其所指文件内容不被删除,指针至文件尾,可以添加,也可以读入数据。若文件不存在,也可用其新建一文件。
(6) 打开文件操作不能正常执行时,函数fopen()返回空指针NULL(其值为0),表示出错。出错原因大致为:以“r”、“r+”方式打开一个并不存在的文件、磁盘故障、磁盘满、无法建立新文件等。
(7) 如果不能实现打开指定文件的操作,则fopen()函数返回一个空指针NULL (其值在头文件stdio.h中被定义为0)。
(8) “r(b)+”与“a(b)+”的区别:使用前者打开文件时,读写位置指针指向文件头;使用后者时,读写指针指向文件尾。
(9) 使用文本文件向计算机系统输入数据时,系统自动将回车换行符转换成一个换行符;在输出时,将换行符转换成回车和换行两个字符。使用二进制文件时,内存中的数据形式与数据文件中的形式完全一样,就不再进行转换。
(10) 有些C编译系统,可能并不完全提供上述对文件的操作方式,或采用的表示符号不同,请注意所使用系统的规定。
(11) 在程序开始运行时,系统自动打开三个标准文件,并分别定义了文件指针:
① 标准输入文件——stdin:指向终端输入(一般为键盘)。如果程序中指定要从stdin所指的文件输入数据,就是从终端键盘上输入数据。
② 标准输出文件——stdout:指向终端输出(一般为显示器)。
③ 标准错误文件——stderr:指向终端标准错误输出(一般为显示器)。
2、文件的关闭
调用该函数后的功能是断开由fopen()函数建立的文件指针fp与其相应文件的联系,释放它所占的内存缓冲区和相应的文件类型结构体变量所占的内存,使得原来的指针变量不再指向该文件。此后就不可以通过该指针来访问这个文件。
需要头文件:#include<stdio.h>
函数的原型:int fclose(FILE * pFile)
函数的参数: pFile指向文件的文件指针。调用这个函数使文件指针变量与文件“脱钩”,释放文件结构体和文件指针。从而释放内存空间。
函数返回值:函数调用成功,关闭文件并返回0。否则(如磁盘空间不足、写保护或关闭已经关闭的文件)返回EOF,即-1。
#include<stdio.h>#include <stdlib.h>#define NULL 0FILE* fp; if(( fp = fopen("文件名","文件使用方式")) == NULL) { printf("file can not open!\n"); exit(0);}┇ fclose(fp);
阿科
2012年9月26日于北京邮电大学学八楼629
- C语言读写文件大全 之 文件的创建、打开与关闭
- C的文件打开关闭与读写
- C语言文件的打开与关闭
- C语言文件的打开与关闭
- 文件的创建打开关闭读写
- C语言 文件的概念与操作(打开、读写和关闭等)
- C语言 文件的概念与操作(打开、读写和关闭等)
- linux下C语言文件的创建打开和关闭
- 文件的创建与删除,打开与关闭(C)
- C语言文件的打开与关闭_1
- 121 C语言文件的打开与关闭
- 文件的创建,打开与关闭
- 【C语言】【unix c】文件的打开与文件的关闭(系统调用函数)
- C语言读写文件大全 之 基础篇
- Linux与C语言的文件读写
- 【C语言】【unix c】文件的操作(文件的打开,关闭,读,写,读写位置重定位)(对文件内容的操作)
- MFC之文件的创建与读写
- C语言——文件的打开和关闭
- 【转】控制WebLogic解压war包
- 用女人的温暖造就男人的成功
- 纯菜鸟的第一次失败的开发经历
- OSI 七层模型
- 公司给员工发5元过中秋
- C语言读写文件大全 之 文件的创建、打开与关闭
- mysql client常见error总结
- linux终端访问U盘或硬盘
- LINUX下磁盘IO性能监测分析
- [HDU-1035] 递推
- linux sd卡驱动分析
- view,activity,window已经activitygroup,viewgroup,windowManager,viewmanager,activitymanager的关系
- android - 为安全而设计 - 2 - 开发文档翻译
- xp下安装cygwin 搭建sshd服务