第9章c语言库函数 9.1概述 9.2文件类型指针 93文件的打开与关闭 94文件的读写 9.5文件的定位 96出错的检查 9,7非缓冲文件系统
第 9 章 C语言库函数 9.1 概述 9.2 文件类型指针 9.3 文件的打开与关闭 9.4 文件的读写 9.5 文件的定位 9.6 出错的检查 9.7 非缓冲文件系统
第9章c语言库函数 9.1概述 C语言将文件看作是一个字符(字节)序列组成的。 分为ASC文件和二进制文件两种。 C的“缓冲文 件系统”自动地 输出 在内存中开辟 /圈冲区 个文件缓冲区,「程序 在对文件进行处数据区 磁盘 文件 理时,通过文件 缓冲区进行输入 7入「输入 缓冲区 与输出
第 9 章 C语言库函数 9.1 概述 C语言将文件看作是一个字符(字节)序列组成的。 分为ASCII文件和二进制文件两种。 C的 “缓冲文 件系统” 自动地 在内存中开辟一 个文件缓冲区, 在对文件进行处 理时,通过文件 缓冲区进行输入 与输出。 程序 数据区 输出 缓冲区 磁盘 文件 输入 缓冲区
92文件类型指针 “文件指针”是缓冲文件系统中的一个重要概念。在 C系统的头文件 stdio. h中定义了一个名叫FE的结构 体类型: ty pede struct Ishort leve;/*缓冲区饱和程度 unsigned flage;/文件状态标志 char fd /*文件号 unsigned char hold;;/无缓冲区取消字符输入为 short bsze;/缓冲区大小,缺省值512* unsigned char“ buffer;/缓冲区 unsigned char *curp;/当前活动指针 unsigned stemp;/草稿文件标识 short token;/作正确性检验 SFILE
9.2 文件类型指针 “文件指针”是缓冲文件系统中的一个重要概念。在 C系统的头文件stdio.h 中定义了一个名叫FILE 的结构 体类型: typedef struct { short unsigned char unsigned char short unsigned char unsigned char unsigned short }FILE; level; flage; fd; hold; bsize; *buffer; *curp; istemp; token; /* 缓冲区饱和程度 */ /* 文件状态标志 */ /* 文件号 */ /* 无缓冲区取消字符输入 */ /* 缓冲区大小,缺省值512 */ /* 缓冲区 */ /* 当前活动指针 */ /* 草稿文件标识 */ /* 作正确性检验 */
93文件的打开与关闭 在对文件读、写之前必须先打开该文件,使用结束 后应关闭该文件。 1.文件打开函数 fopen 函数调用格式: FILE *fp fp= fopen(“文件名”,“使用方式”) 以指定的使用方式打开指定的文件。 说明: ①用fp指向打开的文件后,就可以用它来访问该文件。 ②“文件名”为任何合法的DOS文件名。 ③使用方式见下表:
9.3 文件的打开与关闭 在对文件读、写之前必须先打开该文件,使用结束 后应关闭该文件。 1. 文件打开函数 fopen 函数调用格式: FILE *fp; fp=fopen(“文件名”,“使用方式”); 以指定的使用方式打开指定的文件。 说明: 用fp 指向打开的文件后, 就可以用它来访问该文件。 “文件名”为任何合法的DOS文件名。 使用方式见下表:
使用 方式 含义若文件不存在 若有此文件 只读(文本文件)返回错误标志打开指定的文件 W只写文本文件)建立新文件打开指定的文件并清空内容 a添加(文本文件)建立新文件开毫的文件但只能在文 r+读写(文本文件)返回错误标志打开指定的文件 W+读写(文本文件)建立新文件打开指定的文件并清空内容 a渎写(文本文件)建立新文件打开指定的文件可读写 rb只读(二进制文件)返回错误标志打开指定的文件 wb只写(二进制文件)建立新文件打开指定的文件并清空内容 ab添加(二进制文件)建立新文件打牙指定的文件但只能在文 rb+读写(二进制文件返回错误标志灯开指定的文件 wb+读/写(二进制文件建立新文件打开指定的文件并清空内容 ab读写(二进制文件建立新文件打开指定的文件可读写
使用 方式 含 义 若文件不存在 若有此文件 r 只读(文本文件) 返回错误标志打开指定的文件 W 只写(文本文件) 建立新文件 打开指定的文件并清空内容 a 添加(文本文件) 建立新文件 打开指定的文件,但只能在文 件末尾添加数据 r+ 读/写(文本文件) 返回错误标志打开指定的文件 w+ 读/写(文本文件) 建立新文件 打开指定的文件并清空内容 a+ 读/写(文本文件) 建立新文件 打开指定的文件,可读/写 rb 只读(二进制文件) 返回错误标志打开指定的文件 wb 只写(二进制文件) 建立新文件 打开指定的文件并清空内容 ab 添加(二进制文件) 建立新文件 打开指定的文件,但只能在文 件末尾添加数据 rb+ 读/写(二进制文件)返回错误标志打开指定的文件 wb+读/写(二进制文件)建立新文件 打开指定的文件并清空内容 ab+ 读/写(二进制文件)建立新文件 打开指定的文件,可读/写
④文本文件中的回车换行符在输入时转换为一个换行符, 在输出时又转换为回车换行符。 ⑤为了可靠地打开指定的文件,常用下列方法: if(fp= fopen(“file1”,“r")==NULL) Printf("cannot open this filen); exit(o); 2.文件关闭函数 fclose 使用完一个文件后必须关闭它,以防数据丢失和被 其它操作误用 fclose函数的调用格式: Fclose(文件指针) 关闭文件时的操作就是使指针与文件“脱钩”。正常 关闭时 fclose函数返回0值,关闭有误时返回非0值
文本文件中的回车换行符在输入时转换为一个换行符, 在输出时又转换为回车换行符。 为了可靠地打开指定的文件, 常用下列方法: if ((fp=fopen(“file1” , “ r ”))==NULL) {printf(“cannot open this file\n”); exit(0); } 2. 文件关闭函数 fclose 使用完一个文件后必须关闭它,以防数据丢失和被 其它操作误用。 fclose函数的调用格式: fclose(文件指针); 关闭文件时的操作就是使指针与文件“脱钩”。正常 关闭时fclose函数返回0值,关闭有误时返回非0值
94文件的读写 1. fgetc函数 fgetc函数的功能是从以读或读写方式打开的文件 中读入一个字符。调用格式: ch=fgetc(fp); ch为字符型变量;fp为指向文件的文件类型指针。 2. fputc函数 磁盘函数的功能是将一个字符写入以写方式打开的 文件。调用格式: fputc(ch, fp) ch是要输出的字符;fp为指向文件的文件类型指针 EOF为标准文件的结束标志。在流式文件中,文件 结束标志为eo。当p指向的文件遇到文件结束标志时, feof(fp)=1,否则为0
9.4 文件的读写 1. fgetc 函数 fgetc 函数的功能是从以读或读写方式打开的文件 中读入一个字符。调用格式: ch=fgetc(fp); ch 为字符型变量;fp为指向文件的文件类型指针。 2. fputc 函数 fputc函数的功能是将一个字符写入以写方式打开的 磁盘文件。 调用格式: fputc(ch, fp); ch是要输出的字符;fp为指向文件的文件类型指针。 EOF为标准文件的结束标志。在流式文件中,文件 结束标志为feof。当fp指向的文件遇到文件结束标志时, feof(fp)=1,否则为0
3. fread函数和 fwrite函数 它们是 ANSI C标准提供的函数。调用格式为: fread (buffer, size, count, fp); fwrite (buffer, size, count, fp); buffer为指向 fread读入数据存放的起始地址或 fwrite输出数据的起始地址的指针 size为读写的字节数。 fp为文件类型指针。 count为读写size字节的数据项的个数。 如果 fread或 fwrite调用成功,则函数返回值为 count 的值,即输入或输出数据项的完整个数 如果文件以二进制形式打开,则read和wrte函数就 可以读写任意类型的数据。如: fread(f, 4, 2, fp); 从印p所指的文件读入2个数据存储到实型数组f中
3. fread 函数 和 fwrite 函数 它们是 ANSI C 标准提供的函数。调用格式为: fread(buffer, size, count, fp); fwrite(buffer, size, count, fp); buffer 为指向 fread 读入数据存放的起始地址 或 fwrite 输出数据的起始地址的指针。 size 为读写的字节数。 fp 为文件类型指针。 count 为读写 size 字节的数据项的个数。 • 如果fread或fwrite调用成功,则函数返回值为count 的值,即输入或输出数据项的完整个数。 • 如果文件以二进制形式打开,则fread和fwrite函数就 可以读写任意类型的数据。如: fread(f, 4, 2, fp); 从fp所指的文件读入2个数据存储到实型数组f中
4. fprintf和 fscanf函数 调用格式: fprn(件指针,格式字符串,输出项表 scant文件指针,格式字符串,输入项表) fprintf和 Ifscanf函数与 printf和 scanf函数的不同 之处是:前者的对象为磁盘文件,而后者的对象为终端。 5.putw和getw函数 调用格式: putw(d,fp)将整型量的值输出到fp指向的文件 i=getw(fp);从巾指向的文件中读入一个整数并赋 给整型变量i
4. fprintf 和 fscanf 函数 调用格式: fprintf(文件指针, 格式字符串, 输出项表); fscanf(文件指针, 格式字符串, 输入项表); fprintf 和fscanf 函数与printf 和scanf 函数的不同 之处是:前者的对象为磁盘文件,而后者的对象为终端。 5. putw 和 getw 函数 调用格式: putw(i, fp); 将整型量i的值输出到fp指向的文件 i=getw(fp); 从fp指向的文件中读入一个整数并赋 给整型变量 i
6. fgets和 fputs函数 fgets函数的调用格式: fgets(str, n, fp) 从fp指向的文件中读入n-1个字符并放到字符数 组str中。该函数的返回值为str的首地址。 fputs函数的调用格式: fputs(str, fp); 将一个字符串输出到fp指向的文件中。这里的str 可以是字符串常量、字符串数组名或字符型指针 输出成功,函数值为0,失败时为非0
6. fgets 和 fputs 函数 fgets 函数的调用格式: fgets(str, n, fp); 从 fp 指向的文件中读入 n–1 个字符并放到字符数 组 str 中。该函数的返回值为 str 的首地址。 fputs 函数的调用格式: fputs(str,fp); 将一个字符串输出到 fp 指向的文件中。这里的str 可以是字符串常量、字符串数组名或字符型指针。 输出成功,函数值为0,失败时为非0