目录

  • 1 第一章 C语言简介
    • 1.1 C语言前世今生
    • 1.2 主流开发环境介绍
    • 1.3 第一个小程序解析
    • 1.4 常见编译错误
    • 1.5 章节知识点小结
  • 2 算法基础
    • 2.1 算法-程序的灵魂
    • 2.2 算法的描述-流程图
  • 3 数据类型与运算符
    • 3.1 数据描述
    • 3.2 运算符和表达式1
    • 3.3 运算符和表达式2
    • 3.4 章节知识点小结
  • 4 顺序结构程序设计
    • 4.1 输入和输出
    • 4.2 顺序结构程序设计
    • 4.3 章节知识点小结
  • 5 选择结构程序设计
    • 5.1 关系运算符和关系表达式
    • 5.2 逻辑运算符和逻辑表达式
    • 5.3 if语句
    • 5.4 条件运算符
    • 5.5 switch语句
    • 5.6 章节知识点小结
  • 6 循环结构程序设计
    • 6.1 while循环结构
    • 6.2 do_while循环结构
    • 6.3 for循环结构
    • 6.4 循环的嵌套
    • 6.5 break语句和continue语句
    • 6.6 章节知识点小结
  • 7 数组
    • 7.1 一维数组
    • 7.2 二维数组
    • 7.3 字符数组
    • 7.4 章节知识点小结
  • 8 函数
    • 8.1 子程序设计
    • 8.2 函数定义
    • 8.3 函数的调用
    • 8.4 局部变量和全局变量
    • 8.5 参数传递
    • 8.6 函数递归调用
    • 8.7 章节知识点小结
  • 9 指针
    • 9.1 指针的基本概念
    • 9.2 指针变量的定义及引用
    • 9.3 通过指针引用数组元素
    • 9.4 指向多维数组的指针和指针变量
    • 9.5 用指向数组的指针作函数参数
    • 9.6 指针与字符串
    • 9.7 函数指针和指针函数
    • 9.8 章节知识点小结
  • 10 用户自己建立数据类型
    • 10.1 定义和使用结构体变量
    • 10.2 使用结构体数组
    • 10.3 结构体指针
    • 10.4 章节知识点小结
  • 11 编译预处理
    • 11.1 宏定义预处理
    • 11.2 文件包含预处理
    • 11.3 条件编译预处理
    • 11.4 章节知识点小结
  • 12 文件
    • 12.1 文件的基本知识
    • 12.2 文件的基本操作
    • 12.3 章节知识点小结
章节知识点小结


知识点

精讲文档

第十二章

文件

121 文件的概念

文件概念

文件是指存放在外部存储器上的数据的集合,它具有一个唯一的名字(文件名),可以通过文件名对文件进行存取、修改和删除等操作。

二进制文件

数据在内存中是以二进制形式存储的,如果不加转换地输出到外存,就是二进制文件。

文本文件

ASCII文件又称文本文件,每一个字节放一个字符的ASCII代码。

缓冲文件系统

缓冲文件系统是指系统自动地在内存区为程序中每一个正在使用的文件开辟一个文件缓冲区。

非缓冲文件系统

非缓冲文件系统不由系统自动设置缓冲区,而由用户自己根据需要设置。

12.2 文件类型指针

文件指针

每个正在被使用的文件都在内存中占一个空间,用来存放文件的有关信息,这些信息保存在一个结构体变量中,该结构体类型在stdio.h中有说明,系统定义其为FILE

文件指针是指FILE类型的指针,它指向一个文件类型的结构,结构里包含着该文件的各种属性。

文件指针的定义:

FILE *fp;

12.3 文件的打开与关闭

文件打开函数fopen()

fopen函数表示将给用户指定的文件在内存中分配一个FILE结构区,并将该结构的指针返回给用户程序。

格式:

FILE   *fp;

fp=fopen(文件名,使用文件方式);     

 

文件打开模式

文件打开模式如下表所示:

Mode

              

文件类型

"r"

打开已经存在的文件,用于只读

文本文件

"w"

创建或重建文件,用于只写,若文件已存在则重建

文本文件

"a"

在文件尾部增加数据,若文件不存在则创建后用于只写

文本文件

"rb"

打开已存在文件,用于只读

二进制文件

"wb"

创建或重建文件,用于只写,若文件已存在则重建

二进制文件

"ab"

在文件尾部增加数据,若文件不存在则创建后用于只写

二进制文件

"r+"

打开已存在的文件,用于读写

文本文件

"w+"

创建或重建文件,用于读写,若文件已存在则重建

文本文件

"a+"

在文件尾部增加数据,若文件不存在,则创建后用于读写

文本文件

"r+b"

打开已存在的文件,用于读写

二进制文件

"w+b"

创建或重建文件,用于读写,若文件已存在则重建

二进制文件

"a+b"

在文件尾部增加数据,若文件不存在,则创建后用于读写

二进制文件


文件关闭函数fclose()

文件的关闭函数格式:

fclose  (文件指针);

12.4 文件的顺序读写

文件的顺序访问

在顺序写时,先写入的数据存放在文件中前面,后写入的数据存放在文件中后面。

在顺序读时,先读文件中前面的数据,后读文件中后面的数据。

对顺序读写来说,对文件读写数据的顺序和数据在文件中的物理顺序是一致的

读写字符函数fputc()fgetc()

fputc函数:

格式:char fputc(char ch,FILE *fp)

功能:将一个字符写入到磁盘文件中去。

fgetc函数:

格式:char fgetc(FILE *fp)

l   功能:从指定的打开的文件流中读取一个字符。

读写字符串函数fputs()fgets()

fputs函数:

格式:int fputs(char *str, FILE *fp)

功能:向文件写入字符串。

fgets函数:

格式:char *fgets(char *str, int n, FILE *fp)

功能:从文件中读取字符串。

格式化读写函数fscanf()fprintf()

调用格式如下:

fscanf(FILE  *fp,char *format, arg_list);

fprintf(FILE  *fp,char *format, arg_list);

说明:

fp为文件指针变量,format为格式字符串,arg_list为输入/输出表列。

二进制读写函数fread()fwrite()

二进制读写函数的调用形式如下:

    fread(buffer,num_bytes, count,fp);

    fwrite(buffer,num_bytes, count,fp);

其中:

1buffer是被读写数据的指针(地址),对于fread来说,它是用来存放从文件读入的数据的存储区的地址,而对于fwrite来说,是要把此地址开始的存储区中的数据向文件输出。

2num_bytes是一次读写的数据的字节数。

3count是确定要读写的数据块的个数。

4fp是文件指针变量。

sizeof运算符

sizeof 运算符返回其操作数占用空间的大小,以字节为单位。

12.5文件的定位、测试与随机读写函数

文件的随机访问

随机访问不是按数据在文件中的物理位置次序进行读写,而是可以对任何位置上的数据进行访问,这种方法比顺序访问效率高得多。

rewind(  )函数

格式:rewind(FILE *fp);

功能:将文件指针返回文件头,同时清除文件结束符和出错标记。

feof()函数

格式:feof(FILE *fp);

功能:测试文件指针是否到达文件结尾。

说明:当文件指向文件结尾时,该函数返回一个非0值,表明文件数据结束,否则返回0以表明文件未结束。

ftell()函数

格式:ftell(FILE *fp);

功能:测试文件指针的当前值,这个值是从文件头算起的字节数

fseek(  )函数

格式:fseek(FILE *fp,long  num_bytes,int origin)

功能:随机设置文件指针的值,以实现文件的随机读取。

12.6文件操作的出错检测

ferror()函数

格式:ferror(FILE *fp);

功能:检测文件操作是否出错。

clearerr()函数

格式:void  clearerr(FILE *fp);

功能:将指定的文件的出错标记和文件结束标记置0

exit()函数

格式:void  exit(int status);

功能:关闭文件。