文件程序设计 实验报告.doc
实验十一文件程序设计班级:学号:姓名:评分:一【实验目的】1、掌握文件的基本概念。2、掌握文本文件的打开和关闭操作。3、掌握文本文件的顺序读、写方法。4、进一步掌握C程序的调试方法和技巧。二【实验内容和步骤】1、程序调试题A目标:进一步学习掌握程序调试的方法和技巧。B内容:参照实验指导教材P107“1.调试示例”,从键盘输入一行字符,写入到文本文件a.txt中。改正程序中的错误,使其实现程序的功能。(注:程序文件保存在“调试示例”文件夹中,文件名为error11_1.cpp)调试正确的源程序清单、#include<stdio.h>#include<stdlib.h>intmain(void)charch;FILE*fp;if(fp=fopen("a.txt","w")=NULL)printf("ContOpenFile!");exit(0);while(ch=getchar()!=n)fputc(ch,fp);fclose(fp);return0;运行结果:(提示:通过屏幕截图,贴粘程序运行界面)。2、完善程序,并调试运行程序题目(1)统计字母、数字和字符。程序功能:统计一个文本文件中字母、数字及其他字符各有多少个。(注:程序文件保存在“第1题”文件夹中)打开proj1.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。调试正确的源程序清单#include<stdio.h>#include<stdlib.h>intmain(void)intletter=0,digit=0,other=0;charch;FILE*fp;if(fp=fopen("a.txt","r")=NULL)printf("ContOpenFile!");exit(0);/请在两条星线之间填入相应的代码,统计文本文件a.txt中的字母、数字及其他字符数。/*/while(!feof(fp)fscanf(fp,"%c",&ch);if(ch<=z&&ch>=a|ch<=Z&&ch>=A)letter+;elseif(ch<=9&&ch>=0)digit+;elseother+;/*/输出统计结果printf("Thenumberofletteris%d.n",letter);printf("Thenumberofdigitis%d.n",digit);printf("Thenumberofotheris%d.n",other);return0;运行结果:(提示:通过屏幕截图,贴粘程序运行界面)。题目(2)比较文件。程序功能:编写一个程序,比较两个文本文件的内容是否相同,若相同则输出“YES”,否则输出“NO”,并输出两个文件内容首次不同的行号和字符位置。(注:程序文件保存在“第2题”文件夹中)打开proj2.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。调试正确的源程序清单#include<stdio.h>#include<stdlib.h>intmain(void)intline=1,position=1,flag=0;charch1,ch2;FILE*fp1,*fp2;if(fp1=fopen("a1.txt","r")=NULL|(fp2=fopen("a2.txt","r")=NULL)printf("ContOpenFile!");exit(0);/请在两条星线之间填入相应的代码,比较两个文本文件的内容是否相同,并设置flag值。/*/while(!feof(fp1)|!feof(fp2)ch1=fgetc(fp1);ch2=fgetc(fp2);position+;if(ch1=n)line+;if(ch1!=ch2)flag=1;break;/*/根据flag值,输出比较结果。if(flag=1)printf("NO,thedifferencepositionbetweena1.txtanda2.txtis%dlines%dcolumns.n",line,position);elseprintf("YESn");return0;运行结果:(提示:通过屏幕截图,贴粘程序运行界面)。题目(3)(选做题)文件合并。程序功能:两个文本文件a1.txt和a2.txt中包含若干从小到大排过序的整数,编写一个程序,把a1.txt和a2.txt两个文本文件中的数据合起来,仍按从小到大顺序写入文本文件a3.txt中。(注:程序文件保存在“第3题”文件夹中)打开proj3.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。调试正确的源程序清单运行结果:(提示:通过屏幕截图,贴粘程序运行界面)。三【实验总结】