㈠ 编写C语言程序,用于比较两个正文文件内容相等(既字符相等)
本不想来啰嗦,但楼上的程序的确有缺陷。如果两个文件长度不同,上面的程序就会得出错误结果。比如头一个文件内容为:abcde第二个文件内容为:abcdefg会得出错误结果。程序改写如下,已编译通过:#include<stdio.h>#include<stdlib.h>intmain(){FILE*f1=fopen("dd.txt","r");/*改为实际文件名*/FILE*f2=fopen("bb.txt","r");charc1=fgetc(f1);charc2=fgetc(f2);while(!feof(f1)&&!feof(f2)){if(c1!=c2){printf("NO");system("pause");return0;}c1=fgetc(f1);c2=fgetc(f2);}if(c1==EOF&&c2==EOF)/*判断两个文件是否都到结尾*/printf("YES");elseprintf("NO");printf("\n");fclose(f1);fclose(f2);system("pause");return0;}
㈡ c语言比较两个文件不同项
先读取第一个文件, 将所有人的名单存在一个字符串数组中。
然后读另一个文件,到第一个数组中去查找,如果文件没错的话,那么每个都应该找到。
删掉找到的。
最后输出剩下的。
㈢ c语言 比较文件内容
system("FC 001.txt 002.txt"); 调用DOS操作系统的FC命令 相同就返回0 不同就把每个不同点输出来
㈣ 编写C语言程序,用于比较两个正文文件内容相等(既字符相等)
本不想来啰嗦,但楼上的程序的确有缺陷。如果两个文件长度不同,上面的程序就会得出错误结果。比如头一个文件内容为: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;}
㈤ 100分 c语言对比两个文件
//奇怪啊,我试了是可以的啊~//非常简单的程序,对比a.dat和b.dat是否相同#include<stdio.h>void main(){ FILE *fp1,*fp2; fp1 = fopen("a.dat","rb"); fp2 = fopen("b.dat","rb"); int n=0; unsigned a,b; while( (!feof(fp1)) && (!feof(fp2)) ) { fread(&a,1,1,fp1); fread(&b,1,1,fp2); if(a != b) { n=1; break; } } if(n==1) printf("no same!\n"); else printf("same!\n"); fclose(fp1); fclose(fp2);}
㈥ 急求朋友的帮助!有关C语言 比较两个文件
Sorry啊,一直没什么时间,只写了一部分,把文件内容读到内存里了。#include<stdio.h>#include<malloc.h>#include<memory.h>#defineN10typedefstruct{characClass[8];characID[12];characName[8];}Info;intReadFirstFile(void**p);//读取文件内容到内存intReadSecondFile(void**p);//读取文件内容到内存intAlocMem(void*p);intmain(){void*p=NULL;char*q=malloc(6*N);memset(q,0,6*N);AlocMem(&p);ReadFirstFile(p);ReadSecondFile(&q);return0;}intAlocMem(void**p){*p=malloc(sizeof(Info)*N);if(NULL==*p){return-3;//内存分配失败}if(!memset(*p,0,sizeof(Info)*N)){return-4;//内存初始化失败}return0;}intReadFirstFile(void*p){FILE*fp=fopen("1.txt","r");charch=0;inti=0;//第i条记录intj=0;//记录内的第j列intk=0;Info*pInfo=NULL;if(NULL==fp){return-1;//文件打开失败}if(NULL==p){return-2;//传入参数为空}pInfo=(Info*)p;while(ch=fgetc(fp)){if(''==ch){continue;}if((ch!='N')&&(j==0)){(pInfo+i)->acClass[k++]=ch;continue;}for(k=0,j=1;k<11;k++)//学号长度为11个字符{(pInfo+i)->acID[k]=ch;ch=fgetc(fp);if(ch=='\n'){break;}}j=2;k=0;while(ch!='\n'){if(ch==''){ch=fgetc(fp);continue;}(pInfo+i)->acName[k++]=ch;ch=fgetc(fp);if(ch==EOF){return0;//读取结束}}k=0;j=0;i++;//读取下一条记录}return0;}intReadSecondFile(void**p){FILE*fp=fopen("2.txt","r");charch=0;inti=0;//第i条记录intk=0;char*pcID;if(NULL==fp){return-1;//文件打开失败}if(NULL==p){return-2;//传入参数为空}//ch=fgetc(fp);pcID=(char*)(*p);while(ch=fgetc(fp)){while(ch!='\n'){if(ch==''){ch=fgetc(fp);continue;}(pcID+i*6)[k++]=ch;ch=fgetc(fp);if(ch==EOF){return0;//读取结束}}i++;k=0;}return-1;}
㈦ C或C++ 比较两个文本文件
#include <stdio.h>#include <string.h>#define MAXLEN 257void 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(“打开文件失败。”);return 1;}CompareFile(fa,fb,flog);rewind(fa);rewind(fb);CompareFile(fb,fa,flog);fclose(fa);fclose(fb);fclose(flog);return 0;}
㈧ C语言指针读取文件内容比对
基本的,你的代码有语法错误 printf(“登录失败”);这里的符号不是英文符号
文本中保存的是两个字符串(空格隔开),你是想让第一个作为帐号,第二个为密码吗
fgets你指定了大小100,而且没有那么多字符能读取,所以它把整个文件中的所有字符都读取了,包含空格,gets()也一样。
所以你输入帐号加密码,中间用空格隔开才是正确的输入方式
然后我试了你的代码,得到了正确的结果,文本中保存的123456 789//注意如果后面有回车换行也可能造成你的错误
㈨ C语言文件比较
check the two files
未经允许不得转载:山九号 » c文件内容比较|C或C++ 比较两个文本文件