怎样写一个c语言程序来找出两个文件中不同的内容,并输出不同的位置和内容

输出到另外一个文件中
内容如果是汉字怎么办
最好给出代码 并在关键的地方注释
最新回答
枕头说它不想醒

2024-05-03 02:21:55

如果两个文件都是文本文件,可以同时打开两个文件,然后依次用fgets来按行读取两个文件中的内容。每读一组字符串,就用strcmp作比较,看是否相同,不同,则输出是第几行,以及两个不同的字符串
深拥意中人

2024-05-03 01:04:24

#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;
}//程序退出时,自动保存了文件
追问
运行的时候提示
error: variably modified 'filea' at file scope
error: variably modified 'fileb' at file scope
我把const int MAX=100; 改为#define MAX 100 后能运行 但输出的只有行数
追答
是只有行数啊,我是给你提供了一个思路嘛,接下来每一行具体的哪里不一样你自己比较吧。
追问
如果文件中的内容是汉字怎么办
追答
汉字是两个字符一个字的,而且汉字的每一个字节是负数,可以直接比,不用管是不是汉字的.如果不同就是汉字不同的
月亮不是地上霜

2024-05-03 03:45:07

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码,为了显示一些不可识别的字符
_旋转

2024-05-03 00:14:47

不是很了解,另请高明吧