【文档说明】C语言第十九讲课件.ppt,共(25)页,238.000 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-44559.html
以下为本文档部分文字说明:
1C语言电子教案(十九)第十九讲第十三章文件主要内容:§13.1文件的概念§13.2文件类型的指针§13.3文件的打开和关闭§13.4文件的读写§13.5文件的定位2§13.1文件的概念文件的创建方式:(1)通
过文字处理软件或操作系统的文件管理功能;(2)通过程序语句创建。数据的输入和输出:在计算机中,数据的输入和输出都是相对于主机(即内存)而言。将数据从磁盘文件或输入设备读入内存称为输入,从内存写到磁盘文件或输出设备称为输出。
3一、文件的概念文件:存储在外部介质(如:软盘、硬盘、光盘等)上的数据的集合。操作系统都是以文件为单位对数据进行管理的,文件又是以文件名作为标识符。在程序设计中,有时需要将磁盘上的数据读入内存中,有时需要将
内存中的数据写入磁盘中,这就要用到文件。如:我们可以将一个班的学生的考试成绩写入数据文件,这样在程序设计中,多个用户都可以使用这样的数据文件,而不必多次输入造成重复劳动。4二、文件的组织形式文件可分为ASCII码文件和二进制
文件。ASCII文件:又称为文本文件(.txt)文件,其中每个字节存放一个ASCII码字符。ASCII码文件占存储空间大,且要花费时间转换(要进行二进制形式与ASCII码形式之间的转换)二进制文件:是将内存中的数据按在内存中的存储形式原样输出到磁盘上存放。二进制文件节省存储空间,不需要转换,
但不能直接输出字符形式,也就是说,不能直观地显示文件的内容5二、文件的组织形式如:整数1000在ASCII文件中:按照4个字符('1','0','0','0')存储,占4个字节。分别为:001100010011000000110000001100001000=512+256+128+6
4+32+0+8+0+0+0=(0000001111101000)2'1'的ASCII码值为49=32+16+0+0+0+1在二进制文件中:是按数据在内存中的存储形式(即按补码)存储的,占2个字节,分别为:
00000011111010006§13.2指向文件的指针指向文件的指针的定义:FILE*变量名;如:FILE*fp;则定义了指针变量fp是一个指向文件的指针。注意:使用FILE定义指向文件的指
针时,必须包含头文件stdio.h7§13.3文件的打开和关闭文件在使用之前,应当先打开,使用之后应将文件关闭,以防数据被破坏。文件的打开和关闭是使用系统定义的函数来实现的。打开文件的函数是:fopen()函数;关闭文件的函数是:fclose()函数。8
一、文件的打开方法:FILE*fp;fp=fopen(文件名,打开方式);文件的打开方式:"r":文本文件只读"w":文本文件只写"a":文本文件追加"rb":二进制文件的只读"r+":二进制文件可读可写打开文件并使指针指向文件
首打开文件并使指针指向文件首打开文件并使指针指向文件尾9一、文件的打开例如:FILE*fp;fp=fopen("E:\test.dat","w");表示将E盘根目录下的test.dat文件,按只写的方式打开。如果磁盘上有此文件,打开并将文件指针指向文件首;如果磁盘上无此文件,创
建一个新文件并打开。文件的打开的常用格式:if((fp=fopen("aa","r"))==NULL){printf("cannotopenthisfile\n");exit(0);}10二、文件的关闭方法:fclose(文件指针);例如:fclose(fp);将指针fp指向
的文件关闭。所谓文件关闭就是文件指针与文件的指向关系中断。11§13.4文件的读写打开文件后,可对文件进行读写操作,对文件的读写操作包括以下几种:fgetc()函数:将一个字符由磁盘文件中读入到内存fputc()函数:将一个字
符写入磁盘文件fread()函数:将一组数据由磁盘文件读入到内存fwrite()函数:将一组数据写入磁盘文件fscanf()函数:将一组数据由磁盘文件中读入到内存fprintf()函数:将一个数据写入磁盘文件12§13.4文件
的读写由于CPU只能与内存有直接数据交换,因此读出文件中的数据不能直接从文件到屏幕,而文件的写入操作也不能直接由键盘到文件,必须经过内存才能进行。文件的读入操作一般包括:先从文件读入到内存再从内存中将数据显示到屏幕
。文件的写入操作一般包括:先从键盘输入到内存再从内存写入到文件13一、fgetc(getc)函数—磁盘文件字符输入函数调用格式:fgetc(fp);功能:从fp所指定的文件中读入一个字符到内存。返回值:如果输入成功,返回所读入的字符;若输入不成功,则返回EOF
(-1)14二、fputc(putc)函数—磁盘文件字符输出函数调用格式:fputc(ch,fp);功能:将字符ch写入fp所指定的数据文件中。返回值:如果输入成功,返回所写入的字符;若输入不成功,则返回EOF(-1);15例1从键盘上输入一行字符写入data1.dat中,遇
#结束#include"stdio.h"main(){FILE*fp;fp=fopen(data1.dat,"w");ch=getchar();while(ch!='#'){fputc(ch,fp);putch
ar(ch);ch=getchar();}fclose(fp);}定义指向文件的指针打开文件,使fp指向文件从键盘到读入到内存从内存写入文件输出到屏幕让用户观察从键盘到内存,为下次循环准备关闭文件if((fp=fopen("data1.txt","w"))==N
ULL){printf("cannotopenthisfile\n");exit(0);}运行程序16三、fread()函数—磁盘文件输入函数调用格式:fread(p,size,n,fp);功能:从fp指定的文件中,读出连续n个大小为size的数据项,将这些数
据项读到以p为起始地址的内存地址中。返回值:从fp所指向的文件中读出的数据个数。文件类型:二进制文件17四、fwrite()函数—磁盘文件输出函数调用格式:fwrite(p,size,n,fp
);功能:将p所指定的内存地址作为起始地址,将连续n个大小为size的数据项写入fp所指定的磁盘文件中。返回值:写入fp所指向的文件中的数据个数。文件类型:二进制文件18五、fscanf()函数—磁盘文件输入函数调用格式:fscanf(fp,格式字符串,地址表列);
功能:按格式字符串所指定的格式,将从fp所指定的文件中读入的数据写入的内存单元地址中,每输入一个数据,指针向下移动若干字节。文件类型:ASCII码文件19六、fprintf()函数—磁盘文件输出函数调用格式:fprintf(fp,格式字符串,输出项表);功能:
按格式字符串指定的格式,向fp所指定的文件中写入数据,每写入一个数据,文件指针向下移动若干字节。文件类型:ASCII码文件20§13.5文件的定位文件中都有一个指针,指向当前的读写位置,文件每进行一次读写操作,文件指针就会自动指向下一个位置。如果想改变这种规律,就需要强制地使文件指
针指向特定的位置,需要使用相应的函数来实现。21一、rewind()函数调用格式:rewind(fp)功能:使fp所指向的文件指针重新返回文件的开头。返回值:无22二、ftell()函数调用格式:ftell(fp)功能:返回fp所指向的文件指针的当前位置。返回值
:长整型,其值是文件指针相对于文件头的字节数。23例2从键盘上输入10个整数写入data2.dat中并输出#include"stdio.h"main(){FILE*fp;inti,j,k;inta[1
0],b[10];fp=fopen(data2.dat,"w+");for(i=0;i<10;i++){scanf("%d",&a[i]);fwrite(a+i,sizeof(int),1,fp);}
for(i=0;i<10;i++){fread(b+i,sizeof(int),1,fp);printf("%6d",b[i]);}printf("\n");fclose(fp);}定义指向文件的指针打开文件
,使fp指向文件从键盘到读入到内存从内存写入文件从文件到内存从内存到屏幕,让用户观察关闭文件运行程序rewind(fp);24例3从键盘上输入10个整数写入data3.dat中并输出#include"std
io.h"main(){FILE*fp;inti,j,k;inta[10],b[10];fp=fopen(data2.dat,"w+");for(i=0;i<10;i++){scanf("%d",&a[i]);fprintf(fp,"%d",*(a+i));}for(i=0;i<10;i
++){fscanf(fp,"%d",b+i);printf("%6d",*(b+i));}printf("\n");fclose(fp);}定义指向文件的指针打开文件,使fp指向文件从键盘到读入到内存从内存写入文件从文件到内存从内存到屏幕,让用户观察关闭文件运行程序rewi
nd(fp);25例4将文件file1.c中的内容显示在屏幕上并写入文件file2.c中#include“stdio.h”main(){FILE*fp1,*fp2;fp1=fopen(“file1.c”,“r”);fp2=fopen(“file2.c”
,“w”);while(!feof(fp1))putchar(getc(fp1));rewind(fp1);while(!feof(fp1))putc(getc(fp1),fp2);fclose(fp1);fclose(fp2);}从fp1所指文件读出字符并显示在屏幕上使fp1指向文件从fp
1所指文件读出字符并现写入fp2所指文件运行程序