1 / 17

第十讲 文件

第十讲 文件. 参考书 《C 程序设计 》 第十二章. 本讲主要内容. 文件的概念 文件结构体及文件指针 与文件操作有关的函数 综合举例. 文件的概念. 文件: 文件是磁盘上数据的集合。 C 语言的文件是流式文件。 文件结构体及文件指针 文件结构体是由系统定义的,在 stdio.h 中定义 : struct _iobuf { char _FAR_ *_ptr; int _cnt; char _FAR_ *_base; char _flag; char _file; };

naava
Download Presentation

第十讲 文件

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第十讲 文件 参考书《C程序设计》第十二章

  2. 本讲主要内容 • 文件的概念 • 文件结构体及文件指针 • 与文件操作有关的函数 • 综合举例

  3. 文件的概念 • 文件: • 文件是磁盘上数据的集合。 C 语言的文件是流式文件。 • 文件结构体及文件指针 • 文件结构体是由系统定义的,在 stdio.h 中定义: struct _iobuf { char _FAR_ *_ptr; int _cnt; char _FAR_ *_base; char _flag; char _file; }; typedef struct _iobuf FILE; 其中集合了处理文件所需的各种有关信息:文件当前的读写位置、文件当前位置到文件尾之间的数据个数、该文件读写缓冲区位置、出错标志、该文件是已打开的第几个文件。 • 文件(结构体)指针: FILE *文件指针名

  4. 文件位置指针的定位 • 由文件打开方式确定: “r”“w”:指向文件头“a”:指向文件尾 • 库函数 void rewind(FILE *fp) 将文件的位置指针置于文件开头 • 库函数 fseek

  5. fopen include: <stdio.h> 语法:FILE *fopen (文件名,“访问模式”); 参数: 文件名:字符串。(包括路径名) 访问模式: a:追加,若文件不存在,则创建新文件。 a+:同a,但可读。 r:读,若文件不存在,则失败。 r+:同r,但可写。 w:写,创建新文件,若已有同名文件存在则被破坏。 w+:同w,但可读。 t:文本方式。读入时,CR-LF转换为 LF,写时,LF转换为 CR-LF, CTRL+Z作为文件结束。文件以读或读、写方式打开时,去除CTRL+Z。 b:二进制方式,不做上述转换。

  6. fclose include: <stdio.h> 语法:FILE *fclose(文件指针); 功能:关闭文件 返回:成功 0,否则 EOF(-1)

  7. fputc,fputchar,putc,putchar 例 3 include: <stdio.h> 语法: int fputc(int c,FILE *stream); int fputchar(int c); int putc(int c,FILE *stream); int putchar(int c); 参数: c: 被写的字符。 stream: 文件指针。 返回:成功:所写字符;失败:EOF。 功能:将一个字符写到文件中。 注:putchar(c) 与 putc(c,stdout)等同,二者都是宏。fputchar(c) 与 fputc(c,stdout)等同,二者都是函数。

  8. fgetc,fgetchar,getc,getchar 例 1 include: <stdio.h> 语法: int fgetc(FILE *stream); int fgetchar(void); int getc(FILE *stream); int getchar(void); 参数: stream: 文件指针 返回:成功:所读字符;失败或读到文件尾:EOF 功能:从流式文件中读一个字符 注:getchar() 与 getc(stdin)等同,二者都是宏。fgetchar() 与 fgetc(stdin)等同,二者都是函数。 例 2

  9. fread,fwrite include: <stdio.h> 语法: size_t fread( void *buffer, size_t size, size_t count, FILE *stream ); size_t fwrite( void *buffer, size_t size, size_t count, FILE *stream ); 参数: buffer: 读/写数据的存放首地址 size: 每次要/写读的字节数 count: 读/写次数 stream: 文件指针 返回:实际读/写的次数。 功能:从文件中连续读入 count 次,字节数为 size 的数据块, 存放在起始地址为 buffer 的内存区域。

  10. fprintf,fscanf 与 printf, scanf 类似, 但读/写对象是文件 看书:P280 例 4

  11. putw include: <stdio.h> 语法: int putw(int binint,FILE *stream); 参数: binint: 要写入文件中的整数 stream: 文件指针 功能:以二进制形式,向文件中写一个 int 型的整数。 返回:成功:所写的整数值;失败:EOF。

  12. getw include: <stdio.h> 语法: int getw(FILE *stream); 参数: stream: 文件指针 功能:从文件中读一个二进制 int 型的整数。 返回:成功:所读的整数值;失败:EOF。

  13. fgets include: <stdio.h> 语法: char *fgets(字符数组首地址 string, 字节数 n, 文件指针); 功能:从文件中读入 n-1 字符,存入字符数组string中。 若不到 n-1 个字符时遇到换行或 EOF,则结束读操作。 返回:成功:地址 string; 失败时,或在未读满n-1个字符,且未遇到换行符时遇 EOF:返回0。 例 5

  14. fputs include: <stdio.h> 语法: int fputs(字符串首地址 string,文件指针); 功能:将字符串写入文件中,自动舍弃末尾 '\0'。 返回:成功:非负值;失败:EOF。 例 6

  15. fseek include: <stdio.h> 语法: int fseek(文件指针,位移量,起始点); 功能: 移动文件的读/写位置指针,从起始点开始,按位移量移动。 参数: 起始点: 文件开始:SEEK_SET 0 当前位置:SEEK_CUR 1 文件末尾:SEEK_END 2 位移量:从起始点偏移的字节数。

  16. 其它函数 include: <stdio.h> void rewind(文件指针); 功能:将位置指针置于文件开头。 返回值:无。 long ftell(文件指针); 功能:取得文件当前的读写位置。 返回值:成功:文件当前的读写位置; 失败:-1L。 int ferror(文件指针) 功能:测试文件的读写错误。 返回值:文件无错:0;文件有错:非 0。 void clearerr(文件指针) 功能:将错误标志、结束标志置 0。

  17. 作 业 • 复习: 《C 程序设计》第十二章 • P291 12.6,12.7,12.8,12.9 • P291 其它题选做。

More Related