C语言 对比两个文件内容的不同

C语言 对比两个文件内容的不同,第1张

如果两个文件长度不同。比如头一个文件内容为:abcde第二个文件内容为:abcdefg会得出错误结果。

程序改写如下,已编译通过:

#include <stdio.h>

#include <stdlib.h>

int main(){

FILE * f1 = fopen("dd.txt","r")/* 改为实际文件名 */

FILE * f2 = fopen("bb.txt","r")

char c1 = fgetc(f1)

char c2 = fgetc(f2)

while(!feof(f1) &&!feof(f2)){

if(c1 != c2){printf("NO")system("pause")return 0}

c1 = fgetc(f1)

c2 = fgetc(f2)

}

if(c1==EOF&&c2==EOF) /* 判断两个文件是否都到结尾 */

printf("YES")

else

printf("NO")

printf("\n")

fclose(f1)

fclose(f2)

system("pause")

return 0

}

先读取第一个文件, 将所有人的名单存在一个字符串数组中。

然后读另一个文件,到第一个数组中去查找,如果文件没错的话,那么每个都应该找到。

删掉找到的。

最后输出剩下的。

#include <stdio.h>

#include <string.h>

#define MAXLEN 257

void CompareFile(FILE *fa,FILE *fb,FILE *flog) {

char sa[MAXLEN],sb[MAXLEN],flag

while(!feof(fa)) {

fgets(sa,MAXLEN,fa)

flag = 1

while(!feof(fb)) {

fgets(sb,MAXLEN,fb)

if(strcmp(sa,sb) == 0) {

flag = 0

break

}

}

if(flag) fputs(sa,flog)

rewind(fb)

}

}

int main() {

FILE *fa,*fb,*flog

fa = fopen("a.txt","rt")

fb = fopen("b.txt","rt")

flog = fopen("log.txt","wt")

if(fa == NULL || fb == NULL || flog == NULL) {

printf("打开文件失败。\n")

return 1

}

CompareFile(fa,fb,flog)

rewind(fa)

rewind(fb)

CompareFile(fb,fa,flog)

fclose(fa)

fclose(fb)

fclose(flog)

return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/6077059.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-13
下一篇 2023-03-13

发表评论

登录后才能评论

评论列表(0条)

保存