C语言课件第9章文件.ppt
《C语言课件第9章文件.ppt》由会员分享,可在线阅读,更多相关《C语言课件第9章文件.ppt(56页珍藏版)》请在冰豆网上搜索。
![C语言课件第9章文件.ppt](https://file1.bdocx.com/fileroot1/2022-10/19/75f6db85-9ae7-4173-b3bd-dec28e0d522f/75f6db85-9ae7-4173-b3bd-dec28e0d522f1.gif)
本章导读本章导读文件是程序设计中极为重要的一个概念,文件一般指存储在外部介质上的数据的集合。
通过文件可以大批量处理数据,可以长时间的将信息存储起来。
本章通过文件操作实例分析着手,使读者首先对文件的操作过程有一个初步的了解,明白文件操作的重要性,进而再深入的学习C语言有关文件的操作。
CCCCCC语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计(VVViiisssuuuaaalllCCC+666.000环环环环环环境境境境境境)返回本书目录返回本书目录第第第第99章章章章文件文件文件文件本章主要知识点本章主要知识点
(1)文件操作的CC程序实例
(2)文件的打开与关闭(3)文件的读写和定位(4)文件出错的检测第第第第99章章章章文件文件文件文件CCCCCC语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计(VVViiisssuuuaaalllCCC+666.000环环环环环环境境境境境境)返回本章导读返回本章导读9.2文件的打开与关闭文件的打开与关闭9.3文件的读写文件的读写9.5文件出错的检测文件出错的检测9.4文件的定位文件的定位9.1文件操作的文件操作的CC程序实例程序实例9.6综合实训综合实训CCCCCC语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计(VVViiisssuuuaaalllCCC+666.000环环环环环环境境境境境境)返回本章目录返回本章目录9.1.2C文件概述文件概述9.1.3文件类型指针文件类型指针9.1.1文件操作的文件操作的C程序实例程序实例9.19.1文件操作的文件操作的文件操作的文件操作的CC程序实例程序实例程序实例程序实例9.1.19.1.1文件操作的文件操作的文件操作的文件操作的CC程序实例程序实例程序实例程序实例CCCCCC语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计(VVViiisssuuuaaalllCCC+666.000环环环环环环境境境境境境)返回本节目录返回本节目录1.C程序实例程序实例
(1)2.C程序实例程序实例
(2)3.C程序实例程序实例(3)9.1.19.1.1文件操作的文件操作的文件操作的文件操作的CC程序实例程序实例程序实例程序实例CCCCCC语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计(VVViiisssuuuaaalllCCC+666.000环环环环环环境境境境境境)返回本节目录返回本节目录1.C程序实例1【例9.1】读出文件file.txt中的字符。
程序文件名为l9_1.cpp。
1)#includestdio.h#includevoidmain()charch;/*定义一个字符变量ch*/FILE*fp;/*定义一个文件类型的指针变量fp*/fp=fopen(file.txt,r);/*打开文本文件file*/if(fp=NULL)/*打开文件失败*/printf(cannotopenthisfilen);exit(0);9.1.19.1.1文件操作的文件操作的文件操作的文件操作的CC程序实例程序实例程序实例程序实例CCCCCC语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计(VVViiisssuuuaaalllCCC+666.000环环环环环环境境境境境境)返回本节目录返回本节目录ch=fgetc(fp);/*读出文件中的字符并赋予变量ch*/while(ch!
=EOF)/*判断文件是否结束*/putchar(ch);/*输出从文件中读出的字符*/ch=fgetc(fp);/*读出文件中的字符并赋予变量ch*/fclose(fp);/*关闭文件*/建立文本文件,在文件中输入一些文字,保存文件名为file,然后与程序文件放在同一目录下。
如右图所示:
9.1.19.1.1文件操作的文件操作的文件操作的文件操作的CC程序实例程序实例程序实例程序实例CCCCCC语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计(VVViiisssuuuaaalllCCC+666.000环环环环环环境境境境境境)返回本节目录返回本节目录程序执行结果为:
从文件从文件file中读出的文字中读出的文字9.1.19.1.1文件操作的文件操作的文件操作的文件操作的CC程序实例程序实例程序实例程序实例CCCCCC语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计(VVViiisssuuuaaalllCCC+666.000环环环环环环境境境境境境)返回本节目录返回本节目录【例9.2】将用户从键盘输入的用户名和密码写到文件user.x中。
程序文件名为l9_2.cpp。
#includestdio.h#includestructuserinfo/*定义结构体*/charusername10;charpassword12;stu;voidmain()FILE*fp;/*定义文件指针fp*/fp=fopen(user.x,wb);/*以二进制方式打开文件user.x*/if(fp=NULL)/*打开文件失败*/2.C程序实例2printf(cannotopenthisfilen);exit(0);printf(Pleaseinputyourusername:
);scanf(%s,&stu.username);printf(nPleaseinputyourpassword:
);scanf(%s,&stu.password);fwrite(&stu,sizeof(userinfo),1,fp);/*将用户输入的信息写入文件*/fclose(fp);/*关闭文件*/例如用户根据提示信息输入如下:
Pleaseinputyourusername:
studentPleaseinputyourpassword:
12345678则执行结果为先在程序文件的目录下建立文件user.x,然后将字符串“student”和“12345678”写入该文件。
9.1.19.1.1文件操作的文件操作的文件操作的文件操作的CC程序实例程序实例程序实例程序实例CCCCCC语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计(VVViiisssuuuaaalllCCC+666.000环环环环环环境境境境境境)返回本节目录返回本节目录【例9.3】从文件user.x中读取用户名和密码。
程序文件名为l9_3.cpp。
#includestdio.h#includestructuserinfo/*定义结构体*/charusername10;charpassword12;stu;9.1.19.1.1文件操作的文件操作的文件操作的文件操作的CC程序实例程序实例程序实例程序实例CCCCCC语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计(VVViiisssuuuaaalllCCC+666.000环环环环环环境境境境境境)返回本节目录返回本节目录3.C程序实例3voidmain()FILE*fp;/*定义文件类型指针fp*/fp=fopen(“user.x”,“rb”);/*以二进制只读方式打开文件user.x*/if(fp=NULL)printf(cannotopenthisfilen);exit(0);fread(&stu,sizeof(userinfo),1,fp);/*读出文件中的数据*/printf(yourusername:
%sn,stu.username);printf(yourpassword:
%sn,stu.password);fclose(fp);/*关闭文件*/9.1.19.1.1文件操作的文件操作的文件操作的文件操作的CC程序实例程序实例程序实例程序实例CCCCCC语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计(VVViiisssuuuaaalllCCC+666.000环环环环环环境境境境境境)返回本节目录返回本节目录假如假如user.x中的数据是实例中的数据是实例2所输入的信息,则输出结果为:
所输入的信息,则输出结果为:
yourusername:
studentyourpassword:
123456789.1.29.1.2CC文件概述文件概述文件概述文件概述CCCCCC语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计(VVViiisssuuuaaalllCCC+666.000环环环环环环境境境境境境)返回本节目录返回本节目录C语言把磁盘文件看作是字符(或字节)的序列,根据数据的组织形式(存储信息的形式),文件可分为ASC码文件和二进制文件。
ASC码文件又称为文本文件,该文件是由一个个字符组成,每一个字节存放一个ASC码,代表一个字符。
二进制文件是把内存中的数据按其在内存中的存储形式原样放入磁盘存放。
例如,现有一个整数1234,如果按ASC码形式存入文件,要占4个字节,其存储形式如下:
9.1.29.1.2CC文件概述文件概述文件概述文件概述CCCCCC语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计(VVViiisssuuuaaalllCCC+666.000环环环环环环境境境境境境)返回本节目录返回本节目录如果按二进制形式存入文件,则只占2个字节,其存储形式与内存中的存储形式相同,如下:
0000010011010010由以上举例不难看出用ASC码形式存入文件时一个字节代表一个字符,因而便于对字符进行逐个处理,也便于输出,但一般占存储空间较大,而且要花费二进制形式与ASC码之间的转换时间。
用二进制形式存入文件则可以节省外存空间和转换时间,但一个字节并不对应一个字符,所以如果在屏幕上显示经常显示的是乱码。
9.1.39.1.3文件类型指针文件类型指针文件类型指针文件类型指针CCCCCC语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计(VVViiisssuuuaaalllCCC+666.000环环环环环环境境境境境境)返回本节目录返回本节目录C语言程序可以同时处理多个文件,为了对每一个文件进行有效的管理,在打开一个文件时,系统会自动地在内存中开辟一个区,用来存放文件的有关信息(如文件名、文件状态等)。
这些信息保存在一个结构体变量中,该结构体是由系统定义的,取名为FILE。
FILE定义在头文件stdio.h中。
对每一个要进行操作的文件,都需要定义一个指向FILE类型结构体的指针变量,该指针称为文件类型指针,文件类型指针的定义方法如下:
FILE*指针变量;如:
FILE*fp;fp是一个指向FILE类型结构体的指针变量。
当fp和某个文件建立关联之后,通过fp即可找到存放该文件信息的结构变量,然后按结构变量提供的信息找到该文件,实施对文件的操作。
CCCCCC语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计(VVViiisssuuuaaalllCCC+666.000环环环环环环境境境境境境)返回本章目录返回本章目录9.2.2文件关闭函数文件关闭函数fclose()9.