怎样写一个c语言程序来找出两个文件中不同的内容,并输出不同的位置和内容
4个回答
展开全部
#include<stdio.h>
#include<string.h>
const int MAX=100;
char filea[MAX][MAX],fileb[MAX][MAX];
int read(char s[MAX][MAX],char filename[])
{
freopen(filename,"r",stdin);//打开文件
int ret=0;
while(gets(s[ret]))//获取文件的每一行,保存起来
{
ret++;
}
return ret;//返回这个文件有多少行
}
int main()
{
int i;
int cnt;//定义变量,用于保存有多少不同的行
int la=read(filea,"filea.txt");
int lb=read(fileb,"fileb.txt");
cnt=0;
for(i=0;i<la&&i<lb;i++)
{
if(strcmp(filea[i],fileb[i])!=0)
cnt++;
}
while(i<la)//把剩下的行都加过来
{
cnt++;
i++;
}
while(i<lb)//把剩下的行都加过来
{
cnt++;
i++;
}
printf("不同的行数有:%d\n",cnt);
return 0;
}//程序退出时,自动保存了文件
#include<string.h>
const int MAX=100;
char filea[MAX][MAX],fileb[MAX][MAX];
int read(char s[MAX][MAX],char filename[])
{
freopen(filename,"r",stdin);//打开文件
int ret=0;
while(gets(s[ret]))//获取文件的每一行,保存起来
{
ret++;
}
return ret;//返回这个文件有多少行
}
int main()
{
int i;
int cnt;//定义变量,用于保存有多少不同的行
int la=read(filea,"filea.txt");
int lb=read(fileb,"fileb.txt");
cnt=0;
for(i=0;i<la&&i<lb;i++)
{
if(strcmp(filea[i],fileb[i])!=0)
cnt++;
}
while(i<la)//把剩下的行都加过来
{
cnt++;
i++;
}
while(i<lb)//把剩下的行都加过来
{
cnt++;
i++;
}
printf("不同的行数有:%d\n",cnt);
return 0;
}//程序退出时,自动保存了文件
更多追问追答
追问
运行的时候提示
error: variably modified 'filea' at file scope
error: variably modified 'fileb' at file scope
我把const int MAX=100; 改为#define MAX 100 后能运行 但输出的只有行数
追答
是只有行数啊,我是给你提供了一个思路嘛,接下来每一行具体的哪里不一样你自己比较吧。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
FILE* fp1;
FILE* fp2;
int fileIndex;
if((fp1=fopen("fileOnePath","r"))!=NULL && fp2=fopen("fileTwoPath","r"))!=NULL)
{
while(!feof(fp1) && !feof(fp2))
{
char ch1 = fgetc(fp1);
char ch2 = fgetc(fp2);
if(ch1 != ch2)
{
printf("something different happen in: %d byte\n",fileIndex)
printf("different content: %c(%d) != %c(%d)\n",ch1,ch1,ch2,ch2)
}
fileIndex++;
}
第一个打印的是不同的位置单位是:位
第二个打印的不同的内容,如:1(49) != 2(50),括号里是不同字符的ASCII码,为了显示一些不可识别的字符
FILE* fp2;
int fileIndex;
if((fp1=fopen("fileOnePath","r"))!=NULL && fp2=fopen("fileTwoPath","r"))!=NULL)
{
while(!feof(fp1) && !feof(fp2))
{
char ch1 = fgetc(fp1);
char ch2 = fgetc(fp2);
if(ch1 != ch2)
{
printf("something different happen in: %d byte\n",fileIndex)
printf("different content: %c(%d) != %c(%d)\n",ch1,ch1,ch2,ch2)
}
fileIndex++;
}
第一个打印的是不同的位置单位是:位
第二个打印的不同的内容,如:1(49) != 2(50),括号里是不同字符的ASCII码,为了显示一些不可识别的字符
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不是很了解,另请高明吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询