本章的主要内容包括:
C语言文件概念
C语言的文件操作库函数第九章 文件回首页本节的主要概念包括:
文件是具有名字,存储于外存的数据的集合 。
操作系统管理文件的方法
每个文件或目录必须有也只能有一个唯一的名字,包括盘符名,路径,
主文件名和文件扩展名 4部分信息 。
文件输入输出:
程序在内存中运行的过程中与外存交互主要是通过以下两种方法:
( 1) 以文件为单位将数据写到外存中;
( 2) 从外存中根据文件名读取文件中的数据 。
将向外存写入信息称为,输出,,由外存取信息称为,输入,。
讨论 C语言如何处理输入输出:
文件分类,流,设备文件,IO缓冲
C语言基本文件操作:创建 ( 打开文件 ),撤消 ( 关闭文件 ),读写 ( 通过流对文件的读和写 ) 及其他辅助函数 。
9.1 文件基本概念
EOF是 stdio.h中定义的宏,它的值是 -1。 在文件操作经常用来表示文件操作的结果状态 。
9.2.1 文件指针类型系统为每一个使用的文件在内存中开辟一个存储区,存放文件的有关信息,这些信息用一个结构变量保存,该结构类型的名字是 FILE。
系统为每一个打开的文件分配一个区,存放 FILE结构,程序通过
FILE类型指针建立和文件的联系,进行关于文件的一切操作 。
指向文件结构类型的指针叫文件指针 。 如 FILE *fp;
通过打开文件的操作,一个文件与指针变量 fp建立联系,通过 fp,
能够访问 fp关联的文件,所有关于该文件的读写操作均通过 fp
完成 。
9.2文件的使用
9.2.2.1 文件打开 ( fopen函数 )
fopen函数打开文件,返回 FILE指针值 。 用 FILE指针变量接受 fopen
返回值后,就可以通过指针进行各种文件操作 。
FILE *fopen(const char *filename,const char *mode)
打开方式,
"r" 按读方式打开文本文件,如找不到文件则失败 。
"w" 按写方式打开 ( 创建 ) 文本文件,如文件已有则丢弃原有内容 。
"a" 按添加方式打开或创建文本文件,在已有部分之后写 。
"r+" 读更新方式,可以对文本文件读或写 。
"w+" 写更新方式,可以对文本文件写读,如文件存在则丢弃原内容 。
,a+” 添加并可读方式,从文件尾接着写 。
讨论各种打开方式的特点和要求 。
9.2.2 文件的打开和关闭
9.2.2.2 文件关闭 ( fclose函数 )
关闭文件用函数 fclose,原型是:
int fclose(FILE *fp)
关闭操作使文件指针变量不再指向与该文件对应的 FILE结构,从而断开与文件的关联 。
关闭文件操作会引起系统对文件缓冲区的一系列操作,将输出流缓冲区数据输出到文件;对输入流丢掉缓冲区内容;释放动态缓冲区 。 操作正常返回 0,否则返回 EOF。 如果不关闭文件,将会丢失数据,应该养成在使用完文件后关闭文件的习惯 。
一个 C程序能同时打开的文件数有限,文件用完后应及时关闭 。 程序退出时所有文件将自动关闭 。
9.2.2 文件的打开和关闭
9.2.2.2 文件关闭 ( fclose函数 )
文件使用的步骤如下:
FILE *fp;
fp = fopen("文件名 ","r");
if (fp == NULL) {
/* 当文件打开失败时的处理 */
}
...,.,/* 对文件的各种操作 */
fclose(fp);
9.2.2 文件的打开和关闭顺序读写是指从文件中一个接一个读写数据,仅当读写了前一个数据后,才能读写下一个数据 。
顺序读写在读写数据后,文件当前指针自动跳到下一个读写位置 。
标准输入输出只能进行顺序读写 。
随机读写是指从文件中读写数据时可不考虑数据在文件中的位置,
也就是说,可以在文件的任何位置读写 。
随机读写在读写数据前,需要将文件当前指针移到读写位置 。 当文件以读或写方式打开,文件位置指针设置在文件头,若文件以附加方式打开,位置设置在文件末尾 。
1,文件的顺序写函数
intfprintf(FILE*stream,char *format,<variable-list>)
intfputs(char*string,FILE *steam)
intfputc(intch,FILE *steam)
讨论上面三个函数的用法 。
9.2.3 文件输入输出函数
2,文件的顺序读操作函数
int fscanf(FILE*stream,char*format,<address-list>)
char fgets(char*string,int n,FILE *steam)
int fgetc(FILE*steam)
讨论上面三个函数的用法 。
3,文件的随机读写
intfseek(FILE *stream,longoffset,intfromwhere)
intfread(void*buf,intsize,int count,FILE *stream)
intfwrite(void*buf,int size,int count,FILE *stream)
longftell(FILE*stream)
讨论上面四个函数的用法及下面三个常量用法 。
SEEK_SET 0 从文件开头
SEEK_CUR 1 从文件指针的现行位置
SEEK_END 2 从文件末尾
9.2.3 文件输入输出函数
4,feof()和 rewind()函数
int feof(FILE*stream)
int rewind(FILE*stream)
讨论上面两个函数的用法 。
9.2.4 出错处理与有关函数使用标准错误流输出出错信息:
fprintf(stderr,.....,);
出错信息总显示在屏幕上标准库错误处理函数:
void perror(char *s)
int ferror(FILE *stream)
void clearerr(FILE *stream)
讨论上面三个函数的用法 。
9.2.3 文件输入输出函数文件使用的一些要点和技巧:
1,掌握文件操作的步骤
2,确定文件打开方式
3,确定文件操作
4,注意关闭文件
9.3 用好文件要点第九章 文件本章主要知识点:
文件基本概念 。 文件与文件输入 /输出的概念,C语言中文件的两种组织形式 ( 文本文件,二进制文件 ),标准输入 /输出文件,文件操作的一般步骤,文件的基本操作及特点,FILE类型,文件结束标记 EOF。
常用文件操作函数的使用 。 fopen(),fclose(),fgetc(),fputc(),
fgets(),fputs(),fprintf(),fscanf(),fread(),fwrite(),feof(),
ferror()等 。
文件操作的基本算法 。 读,写,追加
文件的读写方式 。 顺序读写文件和随机读写文件的概念,文件的读写位置指针,文件操作与文件指针的关系,常用的与文件位置指针有关的函数 。
fseek(),rewind(),ftell()。
文件与不同数据之间的关系 。 数组,字符串,结构存入文件 。
掌握本章内容的关键是理解文件概念和掌握文件库函数的使用方法 。
回本章首页