C程序设计教案(第10章第1次课)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ch=fgetc(fp);
其中fp为文件类型指针,ch为字符变量。fgetc函数返回的字符赋给字符变量ch。如果在执行fgetc函数读字符时遇到文件结束符,则该函数返回一个结束标志EOF(-1)。如果想从磁盘文件顺序读入字符并在屏幕上显示出来,可以用以下的程序段:
ch=fgetc(fp);
while(ch!=EOF)
其功能是把文件内部的位置指针移到文件开头,如果定位成功,返回0;否则,返回非0。
10.4.2文件随机定位函数
前面学习的文件读写函数主要是用来读写顺序文件的。例如:如果要读取文件中的第6个数据,则打开文件后必须先读取前5个数据后,在读取1个数据才是所需要的数据。而文件随机定位函数可以使文件内部位置指针直接指向第6个数据,在读取当前一个数据就可以。
fgets (ch,50,fp);
上述语句的含义是从fp所指的文件中读出49个字符送入字符数组ch中。
10.3.4格式化读写函数
文件的格式化读写函数和以前学习的格式化输入/输出函数很类似,对于格式化输入/输出函数,只能和标准输入/输出设备文件打交道;而有了格式化的读写函数之后,不但可以处理标准设备的输入/输出,而且可以处理磁盘文件中的数据。
字符串可以是字符串常量,也可以是字符数组名,或指针变量,例如:
fputs("Human",fp);
上述语句的含义是把字符串“Human”写入fp所指的文件之中。
fgets函数的功能是从指定的文件中读一个字符串到字符数组中,其调用形式为:
fgets (str,n,fp);
函数中的参数str是字符数组名;n是一个正整数,表示从文件中读出的字符串不超过n-1个字符。在向字符数组读入的最后一个字符后加上字符串结束标志'\0'。如果在读n-1个字符之前遇到换行符或EOF,读入工作也结束。例如:
在执行上述语句后,ferror(fp)的返回值变成了零。
五)课程小结(10分钟)
由于文件的打开与关闭都是利用系统函数来实现的,因此,在编写有关文件的程序中,应该在其中包含“stdio.h”头文件。
文件打开函数fopen用来打开一个文件,文件一旦使用完毕,应使用关闭文件函数fclose把文件关闭,以避免文件数据丢失等情况的发生。
{
char *s;
int i;
s=&i;
s[0]=getc(fp);
s[1]=getc(fp);
return (i);
}
例如:
putw(200,fp);
上述语句的功能是将整数200输出到fp所指向的文件中。
前面介绍的对文件的读写方式都是顺序读写,也就是读写文件只能从头开始,顺序读写各个数据。但在实际问题中常常要求只读写文件中某一指定的部分。为了解决这个问题,C语言引入了随机读写的概念。所谓“随机读写”是将文件内部的位置指针移动到需要读写的位置后再进行读写,这种读写称为随机读写。实现随机读写的关键是按要求移动位置指针,这称为文件的“定位”。
n
无符号整型,表示要读写的数据块块数
每个数据是size个字节
fp
表示文件指针
读数据块函数调用的一般形式为:
fread(buffer,size,n,fp);
其中的buffer是一个字符型指针,表示存放读入数据的变量地址或数组首地址。size、n、fp的含义见表10-4。
例如:
fread(a,4,8,fp);
格式化写函数fprintf的调用格式为:
fprintf(文件指针,格式字符串,输出列表);
例如:
fprintf(fp,"%d%c",j,ch);
上述语句的作用是将整型变量j和字符型变量ch的值按%d和%c的格式输出到fp指向的文件上。
格式化写函数fscanf的调用格式为:
fscanf (文件指针,格式字符串,输入列表);
文件头定位函数rewind,文件随机定位函数fseek,流式文件的定位函数ftell,判断文件结束函数feof。
C标准提供了ferror和clearerr等一些函数用来检测输入/输出函数调用中的错误。
七、作业安排:
1)预习第十一章的内容
2)预习实验十三的内容
3)第一章习题1、2、3、4、1)2)
此外,在执行fopen函数时,ferror函数的初始值自动置0。
10.5.2 clearerr函数
clearerr函数的功能是使文件错误标志和结束标志置零。其调用格式为:
clearerr(fp);
其中的fp为文件指针。
例如:在调用一个输入/输出函数出错时,ferror函数返回了非零值。例如:
clearerr(fp);
fseek函数用来移动文件内部位置指针,其调用形式为:
fseek(文件指针,位移量,起始点);
10.4.3流式文件的定位函数
用ftell()函数可以返回文件指针的当前位置。其调用格式为:
ftell(fp);
该函数的返回值为长整型数,表示相对于文件头的字节数,出错时返回-1L。例如:
long i;
if((i=f得存储形式,数据文件可以分为文本文件和二进制文件两类。
文本文件:也称ASCII文件,是一种字符流文件。文本文件的优点是可以直接阅读,而且ASCII码标准统一,使文件易于移植,但其缺点是输入、输出都要进行转换,效率低。
二进制文件:二进制文件中的数据是按其在内存中的存储形式存放的。
流:流是一个逻辑设备,其具有诸多相同的行为。在C语言中有两种性质的流:文字流和二进制。
上述语句的含义是从fp所指的文件中,每次读4个字节,也就是把一个实数送入实数组a中,连续读8次,即读入8个实数并送到数组a中。
10.3.3字符串读写函数
字符串读写函数处理的文件类型主要是文本文件,也分为读字符串函数和写字符串函数。
fputs函数的功能是向指定的文件写入一个字符串,其调用形式为:
fputs(字符串,文件指针);
移动文件内部位置指针的函数主要有两个,即rewind函数和fseek函数。
10.4.1文件头定位函数
当读取了文件中若干个数据后,又要从头读取数据,这时就需要将文件内部指针重新指向文件头,C语言提供的文件头定位函数rewind就可以将文件指针重新指定到文件头。该函数的调用格式为:
rewind(文件指针);
{
putchar(ch);
ch=fgetc(fp);
}
fputc函数用来将一个字符写入指定的文件中,该函数的调用格式为:
fputc(ch,fp);
其中ch可以是一个字符常量,也可以是一个字符变量。fp是文件指针变量。该函数的作用是将字符(ch的值)输出到fp所指定的文件中去。fputc函数也带回一个值,如果输出成功,则返回值就是输出的字符,如果输出失败,则返回EOF(-1)。
fgetc函数用来从指定的文件读入一个字符,fputc函数用来将一个字符写入指定的文件中;写数据函数fwrite函数,读数据函数fread函数;写字符串函数fputs,读字符串函数fgets;格式化写函数fprintf,格式化读函数fscanf;除了上面介绍的读写函数外,大部分的C语言编译系统还提供了对磁盘文件读写一个字(整数)的函数——putw和getw。
10.3.2数据读写函数
写数据块函数调用的一般形式为:
fwrite(buffer,size,n,fp);
其中各个参数的含义及说明如表10-4所示。
表10-4 fwrite函数中各个参数的含义及说明
参数
含义
说明
buffer
是一个字符型指针,它表示存放输出数据的变量地址或数组首地址。
size
是一个无符号整型,表示数据块的字节数
1)掌握文件的打开与关闭;
2)掌握文件的读写;
3)掌握文件的定位。
四、教学难点:
1)掌握文件的读写。
2)掌握文件的出错检测
五、教学方法和授课手段
多媒体教室,电子课件。
六、教学过程:
一)预备(复习):位运算。(5分钟)
二)课前提问(5分钟)
三)课程引入:Windows文件的概念,文本文件,二进制文件等。(10分钟)
在调用各种输入/输出函数时,除了函数本身的返回值可以判断调用是否出错外,还可以用ferror函数进行测试。
ferror函数的调用格式为:
ferror(fp);
其中fp是指向文件的指针,当ferror函数的返回值为非零时,表示出错;当返回值为零时,表示没有发生错误。
需要读者注意的是,ferror函数对于同一个文件,在每次调用输入/输出函数时,均产生一个新的ferror函数值。因此最好是每次调用输入/输出函数时立即检查ferror函数值,以防止信息的丢失。
fclose函数调用的一般形式为:
fclose(FILE *fp);
其中,参数fp是文件型指针,通过fopen()函数已经获得,它指向某个打开的文件。例如:
fclose(fp);
上述语句的含义是关闭fp所指向的文件,同时自动释放分配给文件的内存缓冲区。当正常完成关闭文件的操作时,fclose函数的返回值为0,表示已正确关闭指定的文件;如返回非零值则表示有错误发生。
周次:第周课次:第一课授课时间:年月日
一、章节内容:
第10章文件
二、教学目标:
通过本章的学习,要求能理解文本文件和二进制文件的概念,能熟练使用文件的读写函数对文件进行一系列的操作,理解文件的定位和文件的出错检测等,能够利用本章的知识点进行一些简单的课程设计,为后续课程中系统的开发奠定基础。
三、教学重点:
顺序文件:可以进行顺序存取的文件称为顺序文件。
随机文件:可以进行随机存取的文件称为随机文件。
C语言支持的文件存取方式有两种:顺序存取和随机存取。随机存取也称直接存取。
由于文件的打开与关闭都是利用系统函数来实现的,因此,在编写有关文件的程序中,应该在其中包含“stdio.h”头文件。
10.2.1文件的打开
printf(" A file error has occurred at %ld.\n",i);
上述程序段可以通知用户在文件的什么位置出现了文件错误。
10.4.4判断文件结束函数feof
C标准提供了ferror和clearerr等一些函数用来检测输入/输出函数调用中的错误。
10.5.1 ferror函数
例如:
fscanf (fp, "%d%s",&i,str);
若此时fp所指的文件中存放着以下的数据:
6happnewyear
上述语句的作用是将6赋给整型变量i,将“happynewyear”赋给字符型数组str。
10.3.5其他读写函数
除了上面介绍的读写函数外,大部分的C语言编译系统还提供了对磁盘文件读写一个字(整数)的函数——putw和getw
文件的读写操作由文件读写函数完成,常用的读写函数有fputc、fgetc、fread、fwrite、fputs、fgets、fprintf、fscanf、putw、getw等。
10.3.1字符读写函数
fgetc函数用来从指定的文件读入一个字符,该文件必须是读或写方式打开的。fgetc函数的调用格式如下:
四)课程新授:(60分钟)
文件操作引例:
【例10.1】编写程序完成:将一个班级学生的期末考试信息(学号、姓名、总分)存入磁盘文件stu.txt中,同时统计总分在550分以上的优秀学生信息,并将优秀学生的名单输出到屏幕上。
几个跟文件相关得概念:
文件是一组相关数据的集合。在C程序设计中,按文件的内容可以分为两类:一类是程序文件,它是程序得源代码;另一类是数据文件,它是程序运行时需要的原始数据及输出的结果。这两类文件都保存在磁盘上,随时可以使用。程序文件的创建和使用已经在前面各章使用了,本章主要介绍数据文件的创建和使用。
但putw和getw并不是ANSI C标准定义的函数,所以如果所用的C语言编译系统不提供这两个函数,可以按如下的形式自定义这两个函数。
putw(int i,FILE *fp)
{
char *s;
s=&i;
putc(s[0],fp);
puts(s[1],fp);
return (i);
}
getw(FILE *fp)
文件打开函数fopen用来打开一个文件,其调用的一般形式为:
文件指针名=fopen(文件名,使用文件方式);
其中:“文件指针名”必须是被说明为FILE类型的指针变量;“文件名”是被打开文件的文件名;文件名通常是文件变量或文件数组;“使用文件方式”是指文件的类型和操作要求。
10.2.2文件的关闭
文件一旦使用完毕,应使用关闭文件函数fclose把文件关闭,以避免文件数据丢失等情况的发生。
相关文档
最新文档