c语言----文件

来源:互联网 发布:手机网站 源码 编辑:程序博客网 时间:2024/04/28 04:05

1、文件的概念

文件有不同的类型:

(1)程序文件:包括源程序文件(后缀为.c)、目标文件(后缀为.obj)、可执行文件(后缀为exe.),用来存放程序的

(2)数据文件:文件的内容是供程序运行时读写的数据

本章讨论的是数据文件

文件一般指存储在外部介质上的数据集合,如一批数据是以文件的形式存放在外部介质(磁盘)上

c语言中把文件看作是一个字符或一个字节的序列,即由一个个字符或字节的数据顺序组成,中间没有分隔符,这种文件称为流式文件

2、文件名

文件的标识:以便用户识别和引用,包括3个部分:文件路径、文件名主干、文件后缀

doc(Word生成的文件)、txt(文本文件)、dat(数据文件)、c(c语言源程序文件)、cpp(c++源程序文件)、bmp(图形文件)

for(FORTRAN语言源程序文件)、pas(Pascal语言源程序文件)、obj(目标文件)、exe(可执行文件)、ppt(电子幻灯文件)

3、数据文件

可分为ASCII文件和二进制文件

(1)ASCII文件:又称文本文件txt,每个字节放一个字符的ASCII码,适合字符型数据和数值型数据

(2)二进制文件:是把内存中数据按其在内存中的存储形式原样输出到磁盘上存放,适合整形数据

4、文件的缓冲区

ANSIC标准采用缓冲文件系统处理文件,所谓缓冲文件系统是指系统自动在内存区为程序中每一个正在使用的文件开辟一个文件缓冲区

从内存向磁盘输出数据必须先送到内存中的缓冲区,装满缓冲区后才一起送到磁盘,反之,也要充满缓冲区

5、文件指针

每一个被使用的文件在内存中都开辟了一个相应的文件信息区,用来存放文件的相关信息(文件名、文件状态、位置等)

这些信息是保存在一个喜用声明的结构体(FILE)中,定义结构体FILE的信息包含在头文件stdio.h中

可以直接用FILE定义变量 如:FILE f;

一般不对FILE类型变量命名,也就是不通过变量的名字来引用这些变量,而是设置一个指向FILE类型变量的指针变量,通过指针引用FILE的变量

指向文件型数据的指针变量:FILE * fp ;

6、文件的打开与关闭

ANSIC规定了标准的输入输出函数fopen来实现打开文件

fopen (文件名,打开方式); 如果不能实现打开,fopen 函数将带回一个出错信息

打开方式:r(只读):为输入打开一个已存在的文件夹

w(只写):为输出打开一个文件夹

a(追加):向文本文件尾添加数据

rb(只读):为输入打开一个二进制文件

wb(只写):为输出打开一个二进制文件

ab(追加):向二进制文件尾添加数据

r+(读写):为读写打开一个文件夹

w+(读写):为读写建立一个新的文件夹

a+(读写):为读写打开一个文件夹

rb+(读写):为读写打开一个二进制文件夹

wb+(读写):为读写建立一个二进制文件夹

ab+(读写):为读写打开一个二进制文件夹

r表示读(输入)、w表示写(输出)、a表示既可以读也可以写、b表示二进制文件

关闭文件用fclose函数:fclose(文件指针); 函数也带回一个值,当顺利关闭时返回0,否则返回EOF

7、向文件读写一个字符

函数名:fgetc,调用形式:fgetc(fp); 从fp指向的文件读入一个字符,返回值:读成功,带回所读的字符,失败则返回文件结束标志EOF(即-1)

函数名:fputc,调用形式:fputc(ch,fp);把字符ch写到文件指针fp所指向的文件中,返回值:写成功,返回所写字符,失败则返回文件结束标志EOF(即-1)

8、向文件读写一个字符串

函数名:fgets,调用形式:fgets(str,n,fp);从fp指向的文件读入一个长度为(n-1)的字符串,存放到字符数组str中,返回值:读成功,返回地址str,否则返回NULL

函数名:fputs,调用形式:fputs(ch,fp)吧字符str写到文件指针变量fp所指向的文件中,返回值:输出成功,返回0,否则返回非0

9、文件的格式化读写

fprintf(文件指针,格式字符串,输出表列)

fscanf(文件指针,格式字符串,输入表列)

10、用二进制方式读写文件

程序不仅需要一次输入输出一个数据,而且需要一次输入输出一组数据(数组,结构体变量的值)ANSIC标准允许用fread函数从文件读一个数据块用fwrite写一个数据块

形式为:

fread(buffer,size,count,fp)   从fp指向的文件读入count个size个字节的数据到buffer地址的数组中

fwrite(buffer,size,count,fp)   从buffer地址数组中写出count个size个字节的数据到fp指向的文件中

buffer是一个地址,对fread来说,是读入数据的存放地址,对fwrite来说,是输出数据的地址(指的是起始地址)

size:要读写的字节数

count:要进行读写多少个size字节的数据项

fp:文件型指针

0 0
原创粉丝点击