C/C++:文件对碰
来源:互联网 发布:vb 调用bartender 编辑:程序博客网 时间:2024/06/05 07:28
比对两个输出文件,然后输出不同的地方,用于测试,算法题实在找不出bug的地方。
/** 20171030*/#include <cstdio>#include <cstring>using namespace std;#define maxn 1000const char colorA[10] = "\e[01;31m";const char colorB[10] = "\e[01;34m";const char colorC[10] = "\e[01;32m";const char colorS[10] = "\e[0m";const char keyA = '\r';const char keyB = '\n';char filenameA[100];char filenameB[100];FILE* fileAp = NULL;FILE* fileBp = NULL;char ansA[maxn];char ansB[maxn];int res[maxn];int linenum = 0;int colA = 0;int colB = 0;void solve(){ int lenA = strlen(ansA); int lenB = strlen(ansB); if(lenA!=lenB) { printf("line:%d %s(A)%s(A) %s(B)%s(B) %s\n",linenum,colorA,ansA,colorB,ansB,colorS); return ; } memset(res,0,sizeof(res)); bool flag = true; for(int i=0;i<lenA;i++) if(ansA[i]!=ansB[i]){ res[i] = 1;flag = false;} if(flag) return ; printf("line:%d %s(A)",linenum,colorA); for(int i=0;i<lenA;i++) if(res[i]==1) printf("%s%c%s",colorC,ansA[i],colorA); else printf("%c",ansA[i]); printf("(A) %s (B)",colorB); for(int i=0;i<lenA;i++) if(res[i]==1) printf("%s%c%s",colorC,ansB[i],colorB); else printf("%c",ansB[i]); printf("(B)%s\n",colorS);}int main(int argc,char** argv){ if(argc<3) { printf("%sError :: %sNeed Two filename%s\n",colorA,colorB,colorS); return 0; } strcpy(filenameA,argv[1]); strcpy(filenameB,argv[2]); fileAp = fopen(filenameA,"r"); fileBp = fopen(filenameB,"r"); if(fileAp==NULL) { printf("%sError :: %scan not find file named '%s'.%s\n",colorA,colorB,filenameA,colorS); return 0; } if(fileBp==NULL) { printf("%sError :: %scan not find file named '%s'.%s\n",colorA,colorB,filenameB,colorS); return 0; } char a; char b; while(fscanf(fileAp,"%c",&a)!=EOF&&fscanf(fileBp,"%c",&b)!=EOF) { memset(ansA,0,sizeof(ansA)); memset(ansB,0,sizeof(ansB)); linenum++; colA = 0; colB = 0; if(a!=keyB) { ansA[colA++] = a; while(fscanf(fileAp,"%c",&a)!=EOF&&a!=keyB) ansA[colA++] = a; } if(b!=keyB) { ansB[colB++] = b; while(fscanf(fileBp,"%c",&b)!=EOF&&b!=keyB) ansB[colB++] = b; } solve(); } printf("\n%sThe A End\n",colorA); while(fscanf(fileAp,"%c",&a)!=EOF) printf("%c",a); printf("\n%sThe B End\n",colorB); while(fscanf(fileBp,"%c",&b)!=EOF) printf("%c",b); printf("%s\n",colorS); fclose(fileAp); fclose(fileBp); return 0;}
阅读全文
0 0
- C/C++:文件对碰
- C对文件进行操作
- C对文件的读写
- C语言对文件的操作
- C#.net对XML文件类封装:
- C语言中对文件的随机存取
- 我对C语言文件的理解
- C语言中对文件的操作
- c/c++对文件统计函数
- C对文件操作的小结
- C语言对文件操作函数分析
- C++------对文件的操作(初学)
- c语言 对排两个答案文件
- C语言中对文件的操作
- 进一步对C语言的文件理解
- c库函数对文件的操作函数
- C/C++对文件操作小结
- C/C++对文件操作的小结
- Java并发编程:volatile关键字解析
- 学习Python3:201701030
- 创建一个自己能写别人只能读的表
- 欢迎使用CSDN-markdown编辑器
- CodeForces 500C New Year Book Reading(贪心+思维)
- C/C++:文件对碰
- 理解白平衡
- java日志框架使用
- TensorFlow学习_(5)0~9数字识别程序
- 绚丽的自定义星期选择控件
- VS集成SSE
- PE文件结构及其加载机制(四)
- wireshark数据包怎么导出----可以导出指定的数据包
- 每天回顾linux命令(tr)