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

输出到另外一个文件中内容如果是汉字怎么办最好给出代码并在关键的地方注释... 输出到另外一个文件中
内容如果是汉字怎么办
最好给出代码 并在关键的地方注释
展开
 我来答
忘至白葬不情必0T
2012-01-11 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:90%
帮助的人:1.2亿
展开全部
如果两个文件都是文本文件,可以同时打开两个文件,然后依次用fgets来按行读取两个文件中的内容。每读一组字符串,就用strcmp作比较,看是否相同,不同,则输出是第几行,以及两个不同的字符串
百度网友28b4182
2012-01-11 · TA获得超过7222个赞
知道大有可为答主
回答量:4847
采纳率:100%
帮助的人:1852万
展开全部
#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 后能运行 但输出的只有行数
追答
是只有行数啊,我是给你提供了一个思路嘛,接下来每一行具体的哪里不一样你自己比较吧。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
w_zhangwei_1
2012-01-12 · TA获得超过181个赞
知道答主
回答量:214
采纳率:0%
帮助的人:150万
展开全部
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码,为了显示一些不可识别的字符
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
善财彤子
2012-01-11 · TA获得超过691个赞
知道答主
回答量:135
采纳率:0%
帮助的人:54.8万
展开全部
不是很了解,另请高明吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式