《C语言教程》课程教学资源(教案讲义)第十三章 文件

第十三章文件 13.1C文件概述 1.文件:存储在外部介质上的数据的集合。 2ASCI码文件(文本文件) 每个字符以ASCI码形势存储。 3二进制文件 按数据的二进制形式存储在磁盘上 例如:10000是整型数据,用二进制表示占两个字节,如用ASCI 码输出,则占五个字节。 10000 0010011100010000 00l100010011000000l1000000l1000000110000 4.文件流:一连串的字节或字符,不考虑记录的界限。 13.2文件的打开与关闭 1.文件打开函数 fopen:入口参数文件名和调用方式 例:FIE*f;∥说明一个文件类指针 fp=fopen("myfile. dat","r) 文件使用方式 省义 r7(只读) 为输入打开一个文本文件 “w(只写 为输出打开一个文本文件 “a(追加 向文本文件末尾增加数据 rb℃(只读)为输入打开一个二进制文件 (只写 为输出打开一个二进制文件 ab(追加 向二进制文件末尾增加数据 T+(读写) 为读/写打开一个文本文件 w+(读写) 为读/写建立一个新的文本文件 a+ˇ(读写) 为读/写打开一个文本文件 “rb+读写) 为读/写打开一个二进制文件 wb+”(读写 读/写建立一个新的二进制文件 ab+?(读写 为读/写打开一个二进制文件 2关闭文件函数 fclose 使用完文件后应当关闭它,系统把缓冲区的内容写回文件,然
第十三章 文 件 13.1 C 文件概述 1.文件:存储在外部介质上的数据的集合。 2.ASCII 码文件(文本文件): 每个字符以 ASCII 码形势存储。 3.二进制文件 按数据的二进制形式存储在磁盘上 例如:10000 是整型数据,用二进制表示占两个字节,如用 ASCII 码输出,则占五个字节。 10000 00100111 00010000 00110001 00110000 00110000 00110000 00110000 4.文件流:一连串的字节或字符,不考虑记录的界限。 13.2 文件的打开与关闭 1.文件打开函数 fopen(): 入口参数文件名和调用方式 例:FILE *fp; //说明一个文件类指针. fp=fopen("myfile.dat","r"); 文件使用方式 含义 “r”(只读) 为输入打开一个文本文件 “w”(只写) 为输出打开一个文本文件 “a”(追加) 向文本文件末尾增加数据 “rb”(只读) 为输入打开一个二进制文件 “wb”(只写) 为输出打开一个二进制文件 “ab”(追加) 向二进制文件末尾增加数据 “r+”(读写) 为读/写打开一个文本文件 “w+”(读写) 为读/写建立一个新的文本文件 “a+”(读写) 为读/写打开一个文本文件 “rb+”(读写) 为读/写打开一个二进制文件 “wb+”(读写) 读/写建立一个新的二进制文件 “ab+”(读写) 为读/写打开一个二进制文件 2 关闭文件函数 fclose ⚫ 使用完文件后应当关闭它,系统把缓冲区的内容写回文件,然

后将文件指针变量与该文件“脱钩 关闭文件使用函数 fclose,它的原型为 int fclose(file"fp) 该函数关闭印指向的文件。如果文件正常关闭将返回0值;如 果关闭文件失败则返回非0值。 133文件的读写 向文件中写数据 1 fputc(函数 fputc的原型为 It fputc(int ch, FILE*fp); 此函数会将字符ch写入印指向的文件 若操作成功则返回ch的值 若操作失败则返回EOF(-1) 通常用于将一个字符写入一个文本文件。 例13.1从键盘上送入一些字符,存到磁盘中,#”为结束符。 # include“ stdio. h maino f FILEfp; char ch, filename[10 scanf(%os", filename if ((fp=fopen (filename, w)=null) i printf("can not open filen) xit(o) ch=getchar hile(ch=#”){ fputc(ch, p) fclose(fp); 2. fwrite函数 函数原型 unsigned fwrite(void *buffer, unsignedsize unsigned count, FILE fp) ·功能:将buer所指向的内存单元开始的内存区中的每项长度 为sie字节的 count个数据项写到印指向的文件中 此函数主要用于二进制文件的写操作,可以将一个数组的数据 写入文件中
后将文件指针变量与该文件“脱钩”。 ⚫ 关闭文件使用函数 fclose,它的原型为 int fclose(FILE *fp); ⚫ 该函数关闭 fp 指向的文件。如果文件正常关闭将返回 0 值;如 果关闭文件失败则返回非 0 值。 13.3 文件的读写 一.向文件中写数据 1.fputc( )函数. ⚫ fputc 的原型为 ⚫ int fputc(int ch, FILE *fp); ⚫ 此函数会将字符 ch 写入 fp 指向的文件。 若操作成功则返回 ch 的值; 若操作失败则返回 EOF(-1)。 ⚫ 通常用于将一个字符写入一个文本文件。 [例 13.1] 从键盘上送入一些字符,存到磁盘中,“#”为结束符。 #include “stdio.h” main() { FILE *fp; char ch,filename[10]; scanf(“%s”,filename); if ((fp=fopen(filename,”w”))==null) { printf(“can not open file\n”); exit(0); } ch=getchar(); while(ch!=’#’) { fputc(ch,fp); ch=getchar(); } fclose(fp); } 2. fwrite 函数 • 函数原型: – unsigned fwrite(void *buffer, unsigned size, unsigned count, FILE *fp); • 功能:将 buffer 所指向的内存单元开始的内存区中的每项长度 为 size 字节的 count 个数据项写到 fp 指向的文件中。 • 此函数主要用于二进制文件的写操作,可以将一个数组的数据 写入文件中

例13.2 建立一个二进制文件 score dat,存放某班32名同学某门课的成(每 名同学要求有学号和成绩两个数据项。 #include struct struct name Int num ber Int score, Astudents32 maino FILE*fp; int 1 (fp=fopen("score. dat","wb")==NULL printf("Cannot open file score. dat! \ n") exit(o) for(i=0;1<32;i++) o.scanf("%d %d", &students[i]. number, &students[i].score); fwrite(&students[il, sizeof(struct struct name), l, fp) fclose(fp 第二个for循环也可以用以下语句实现: fwrite(students, sizeof(struct struct name), 32, fp); 从文件中读取数据 1. fgetc函数 getc的原型为 int fgetc(FILE *fp) 功能 从文件的当前位置读出一个字符 将位置指针下移一个字符 若读取成功则返回所读的字符;若发生错误或文件结束则返回 EOF(-1)。 2 fread函数
例 13.2 建立一个二进制文件score.dat,存放某班32 名同学某门课的成(每 名同学要求有学号和成绩两个数据项。 #include struct struct_name { int number; int score; }students[32]; main() { FILE *fp; int i; if((fp=fopen("score.dat","wb"))==NULL) { printf("Cannot open file score.dat!\n"); exit(0); } for(i=0;i<32;i++) scanf("%d%d",&students[i].number,&students[i].score); for(i=0;i<32;i++) fwrite(&students[i],sizeof(struct struct_name),1,fp); fclose(fp); } 第二个 for 循环也可以用以下语句实现: fwrite(students,sizeof(struct struct_name),32,fp); 二.从文件中读取数据 1. fgetc 函数 • fgetc 的原型为 – int fgetc(FILE *fp); • 功能: – 从文件的当前位置读出一个字符 – 将位置指针下移一个字符 • 若读取成功则返回所读的字符;若发生错误或文件结束则返回 EOF(-1)。 2. fread 函数

· fread的原型为 unsigned fread(void*buffer, unsigned size unsigned count, FILE* fp) ·功能:从文件中读取每项长度为size字节的 count个数据项 存到 buffer所指向的内存单元开始的内存区中
• fread 的原型为 – unsigned fread(void *buffer, unsigned size; unsigned count, FILE *fp); • 功能:从文件中读取每项长度为 size 字节的 count 个数据项, 存到 buffer 所指向的内存单元开始的内存区中
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《C语言教程》课程教学资源(教案讲义)第十一章 结构和共同体.doc
- 《C语言教程》课程教学资源(教案讲义)第六章 循环控制设计.doc
- 《C语言教程》课程教学资源(教案讲义)第九章 编译预处理.doc
- 《C语言教程》课程教学资源(教案讲义)第八章 函数.doc
- 《C语言教程》课程教学资源(教案讲义)第五章 顺序结构程序设计.doc
- 《C语言教程》课程教学资源(教案讲义)第二章 C语言程序设计概述.doc
- 《C语言教程》课程教学资源(教案讲义)第三章 数据描述与基本操作.doc
- 《C语言教程》课程教学资源(教案讲义)第七章 数组.doc
- 《C语言教程》课程教学资源(教案讲义)第一章 计算机程序高设计与算法.doc
- 《FTP服务器端软件Serv-U教程》教学资源(讲义)第四节 Serv-U用户属性之“General”(常用).doc
- 《FTP服务器端软件Serv-U教程》教学资源(讲义)第六节 Serv-U用户属性之完结.doc
- 《FTP服务器端软件Serv-U教程》教学资源(讲义)第五节 Serv-U用户属性之“Dir Access”(目录存取属性).doc
- 《FTP服务器端软件Serv-U教程》教学资源(讲义)第二节 Serv-U 管理器.doc
- 《FTP服务器端软件Serv-U教程》教学资源(讲义)第三节 Serv-U用户属性之“Account”(帐号).doc
- 《FTP服务器端软件Serv-U教程》教学资源(讲义)第一节 Serv-U的安装和基本设置.doc
- 《FTP服务器端软件Serv-U教程》教学资源(讲义)Serv-U ftp 服务器的进阶管理.doc
- 《FTP服务器端软件Serv-U教程》教学资源(讲义)FTP服务器端软件Serv-U教程.doc
- 北京大学:《ASP程序设计》 第一章 ASP简介.ppt
- 《NT组网》 第一讲 网络基础.ppt
- 《数据结构-C语言描述》 第十章 文件.ppt
- 《C语言教程》课程教学资源(教案讲义)第十章 指针.doc
- 《C语言教程》课程教学资源(教案讲义)程序设计及应用实例(共十一章).pdf
- 《DWDM培训原理》教材PPT课件讲解.doc
- 《C语言教程》课程PPT教学课件:指针与函数.ppt
- 《C语言教程》课程PPT教学课件:选择结构程序设计.ppt
- 《C语言教程》课程PPT教学课件:C程序设计For循环.ppt
- 《C语言教程》课程PPT教学课件:数组与指针.ppt
- 《C语言教程》课程PPT教学课件:多维数组与指针.ppt
- 《C语言教程》课程PPT教学课件:数组与指针的自定义.ppt
- 《C语言教程》课程PPT教学课件:指针的各种定义.ppt
- 《C语言教程》课程PPT教学课件:指针作为函数参数.ppt
- 《C语言教程》课程PPT教学课件:指针是C语言中重要的概念.ppt
- 《C语言教程》课程PPT教学课件:循环控制.ppt
- 《C语言教程》课程PPT教学课件:二维数组的定义.ppt
- 《C语言教程》课程PPT教学课件:变量存储类别.ppt
- 《C语言教程》课程PPT教学课件:程序设计中的函数.ppt
- 《C语言教程》课程PPT教学课件:预处理命令.ppt
- 《C语言教程》课程PPT教学课件:字符数组的元素.ppt
- 《C语言教程》课程PPT教学课件:数组作为函数参数.ppt
- 《C语言教程》课程PPT教学课件:内部函数和外部函数.ppt