C语言比较两个txt文件是否一样!

下面是我的代码!
#include<stdio.h>
int main()
{
FILE *f1,*f2;
char ch1,ch2;
if(((f1=fopen("D:\\C语言\\1.txt","r"))==0)&&((f2=fopen("D:\\C语言\\2.txt","r"))==0))
{
printf("文件不存在!!!\n");
exit(0);
}
do
{
ch1=fgetc(f1);
ch2=fgetc(f2);
if(ch1!=ch2)
{
printf("文件不一样!\n") ;
exit(0);
}
}while(ch1!=EOF||ch2!=EOF);
printf("文件一样!\n");
}
在c-free,vc6,code::blocks中,win7系统下出现下面情况!
该怎么改代码呢?

第一,你的第一个if语句里应该使用||而不是&&,第二,字符串比较不是直接比较的。要借助函数strcmp(str1,str2),如果一样就等于0追问

你改的都对!但还是不能解决当文件一样时,程序不能运行!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-12

我在win7的vs2010上运行了你给的程序,发现没什么大问题,只是"exit"未定义,截图如下

追问

你肯定是没有那两个文件,如果有那两个一样的文件就会出现那样的情况!对了“郝在益”说的是对的,把那地方修改一下再运行看看!(要验证1.txt和2.txt都一样的情况)

追答

我把楼下的方法测试了一下,发现是可以运行的

本回答被提问者采纳
第2个回答  2012-03-12
while(ch1!=EOF||ch2!=EOF);改为while(ch1!=EOF&&ch2!=EOF);追问

这地方不应该修改!应为如果一个文件到了结尾而另一个文件还没结尾就可以认为他们不一样了!

第3个回答  2012-03-13
循环之前加上else
相似回答