C++编程序CompFile比较两文件内容的异同
需求分析: 本程序主要解决的是: 编程序CompFile,首先让用户输入两个文件名及其路径(二文件均为text文件),而后通过使用类成员函数getline逐行读入这两个指定文件的内容并进行比较。若发现有不同,则在屏幕上显示出相异二行的行号及其内容,并暂停下来询问用户是否需要继续比较后继行,直到用户回答不需要继续进行比较,或者已经比到了二文件的结束时停止处理。
本程序在宏定义中定义每行最大字符数为200,ifstream fin,fin2表示分别读入文件1.txt和2.txt的内容,并调用子函数Tlineequal(char *line,char *line2)进行比较,执行直到第一次异同出输出此行,而后根据用户要求选择是否继续执行。
9.2 概要设计:
本程设计思路:本程序主要解决的问题是文件内容的读出问题。文件的读出用到了文件流ifstream和其中函数getline(char, int)。形参分别表示读出内容的存储位置以及读出内容的的最大存储单元数,并且根据eof()来判断文件是否结束,每读入一行则行数加1,以此确定比较内容不同时的位置。内容的比较通过调用子函数Tlineequal(char *line,char *line2),并返回布尔值。当输出不同内容后,若文件没有达到结尾处根据用户的需求来确定是否继续比较下去。
程序流程图(如下图):原文请找腾讯752018766优,文-论'文.网http://www.youerw.com/
9.3 详细设计与编码:
见上传程序。
9.4 调试分析:
在调试过程中程序,遇到的主要问题:对于程序的一些细节问题考虑的不是很全面,对于选择条件的设置不是很合理,后来通过和同学进行讨论及自己的而检查,逐步优化了选择判断的顺序,并基本上实现了本程序的要求,在调试过程中遇到的问题:选择条件的设置不是很合理,出现了混乱的结果,通过重新设置程序框架解决了这一问题。在确定行的位置及行号时有错(前后行号一致),经检验,发现是由于行LineNum的处置定义有错,行数加1的位置应再循环之后,通过仔细检查解决了这些问题。
程序执行的结果:
文件1.txt内容如下:
void main
{
int a,b;
a=4;
b=a;
cout<<a;
}
文件2.txt内容如下:
void main
{
int b,a;
b=4;
a=b;
cout<<a;
}
9.5 用户使用说明:
本程序的用户使用较简单,用户根据程序的提示输入两个文件名及其路径(二文件均为text文件),当输出不同的行内容之后,用户根据提示输入“y/n”,并可区别大小写,根据自己需求来确定程序是否继续执行。其他计算程序产生。
9.6 设计心得:
通过查阅资料和实际的动手实践,我对于文件操作中的ifstream成员函数getline()有了一定了解。对于文件流的一些函数及文件结束的函数判断有了一定的接触。本次实验中我还对文件打开并读入的参数变化有了充分的认识。总体来说,此次设计使我对文件的输入输出流有了更深入的认识,对于它们的参数变化有了逐步深入的了解。1832