《C语言程序设计》课件——第11章 文件.ppt
PART12.6常见错误分析文件操作三要素为打开、打开判断和关闭,初学者通常容易忘记判断打开是否成功或者关闭文件,而且由于这类错误在程序编译及链接时并不报错,很容易被忽略。因此,在编写文件操作程序时可先把三要素写好,然后再添加其他操作程序段。112.3常见错误分析要注意几种打开方式的差别,只写方式为只可写不可读,只读方式为只可读不可写。另外,写方式(只写、读写)会新建文件,如果想保留原文件内容,则应选择追加方式,否则原内容会丢失。例如:if((fp=fopen(test,r))==NULL){ printf(Cannotopenfile!); exit(0);}fputs(str,fp);用只读方式打开文件,却试图向该文件写入数据对,显然是不行的。212.3常见错误分析12.3常见错误分析编程时应了解当前文件位置指针的位置,如需要从文件开始进行操作,应保证此时位置指针在文件的开始处,或用rewind函数将指针强制定位。如果不了解当前文件位置指针的位置,可以用ftell函数查找,然后再进行合适的定位。3本章小结本章主要介绍了文件的基本操作,包括文件的打开、关闭、文件的读写及定位等。通过本章的学习,读者应重点掌握以下内容。?理解文件及文件类型指针的概念。?掌握文件打开函数、文件关闭函数、文件读写函数和文件定位函数的使用方法。?掌握设计简单的文件读写程序。在现代计算机的应用领域中,数据处理是一个重要方面,要实现数据处理,往往要通过文件的形式来完成,因此,学习好本章的内容是非常有必要的。11.4经典题解第11章文件思政目标1、通过经典题解巩固文件操作知识,培养学生独立思考、灵活运用知识的能力,增强学生面对难题时的自信心。2、分析题目加深对文件概念理解,引导学生严谨对待知识细节,培养学生耐心细致、认真负责的学习态度。1.若fp是指向某文件的指针,且已读到文件的末尾,则表达式feof(fp)返回值()。A)EOFB)-1C)非零值D)NULL答案:C)当文件读到结尾时,feof(fp)为非零值,否则为02.标准函数fgets(s,n,f)的功能是()。A)从f所指的文件中读取长度为n的字符串存入指针s所指的内存B)从f所指的文件中读取长度不超过n-1的字符串存入指针s所指的内存C)从f所指的文件中读取长度为n个字符串存入指针s所指的内存D)从f所指的文件中读取长度为n-1的字符串存入指针s所指的内存答案:B)如果未读满n-1个字符时已读到了一个换行符或EOF,则结束本次读入。因此确切地说,调用fgets()函数最多只能读入n-1个字符。3.下述关于C语言文件操作的结论中,()是正确的。A)对文件操作必须先关闭文件B)对文件操作必须先打开文件C)对文件操作顺序无要求D)对文件操作前必须先测试文件是否存在,然后再打开文件答案:B)4.如果需要打开一个已经存在的非空文件“FILE”进行修改,正确的打开语句是()。A)fp=fopen(“FILE”,”r”);B)fp=fopen(“FILE”,”ab+”);C)fp=fopen(“FILE”,”w+”);D)fp=fopen(“FILE”,”r+”);答案:D)以追加方式“ab+”或“a+”方式打开文件,对于写操作,只能把数据写在文件的原有内容之后1.以下C程序将磁盘中的一个文件复制到另一个文件中,两个文件名在命令行中给出(假定文件名无误)。请填空。#includestdio.nmain(intargc,char*argv[]){FILE*f1,*f2;charch;if(argc){printf(“命令行参数错!\n”);exit(0);}f1=fopen(argv[1],”r”);f2=fopen(argv[2],”w”);while()fputc(fgetc(f1),);;;}答案:3!feof(f1)f2felose(f1)fclose(f2)C:\myfilefile1.datfile2.datargv[0]“myfile”argv[1]file1.datargv[2]file2.datargc代表命令行有多少个字符串命令行有3个字符串,都存在argv中2.以下程序用来统计文件中字符的个数。请填空。#in