我有两个文本文件test1.txt和test2.txt。他们每个人都有多个字符串。如果它们相同或不同,我想比较它们并打印。 我的代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
char temp[100];
char const *t1;
char const *t2;
FILE *fp1=fopen("test1.txt","r");
while((t1=fgets(temp,sizeof(temp),fp1))!=NULL){
FILE *fp2=fopen("test2.txt","r");
while((t2=fgets(temp,sizeof(temp),fp2))!=NULL){
if(strcmp(t1,t2)==0){
printf("same\n");
}
else{
printf("Differ\n");
}
}
fclose(fp2);
}
fclose(fp1);
}
文本文件test1.txt:
100100001
1111
的test2.txt:
10101001
1001
上面提到的代码给出了以下输出:
same
same
same
same
这显然是错误的!
我在这里做错了什么?怎么解决?
更新
我修复了代码。以下代码工作正常但请告诉我是否存在更好的解决方案:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
char temp1[100];
char temp2[100];
char const *t1;
char const *t2;
FILE *fp1=fopen("test1.txt","r");
while((t1=fgets(temp1,sizeof(temp1),fp1))!=NULL){
FILE *fp2=fopen("test2.txt","r");
while((t2=fgets(temp2,sizeof(temp2),fp2))!=NULL){
if(strcmp(t1,t2)==0){
printf("same\n");
}
else{
printf("Differ\n");
}
}
fclose(fp2);
}
fclose(fp1);
}
答案 0 :(得分:1)
试试这个:
include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char temp[100];
char t1[100];
char t2[100];
FILE *fp1=fopen("test1.txt","r");
FILE *fp2=fopen("test2.txt","r");
while((fgets(t1,100,fp1)!= NULL) && (fgets(t2,100,fp2)!= NULL))
{
if(strcmp(t1, t2) == 0)
{
printf("same\n");
}
else
{
printf("NOT same\n");
}
}
}
答案 1 :(得分:0)
不要在while循环中使用t1 当f1不等于null时,将f1中的第一个字符串复制到temp1 类似地,当f2.txt不等于null时,然后将f2中的第一个字符串cip到temp2 现在使用strcmp(temp1,temp2)比较字符串temp1和temp2 这样做直到f1.txt或f2.txt等于null