我有兩個文本文件test1.txt和test2.txt。他們每個人都有多個字符串。我想比較它們並打印它們是否相同或不同。 我的代碼如下:比較來自不同文本文件的字符串c
#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
這顯然是錯誤的!
我在這裏做錯了什麼?如何解決它?
UPDATE
予固定的代碼。下面的代碼工作正常,但請讓我知道,如果一個更好的解決方案存在:
#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);
}
您從f1讀取一行到temp。然後你從f2讀入一行到temp。然後你檢查temp和temp是否包含相同的字符串,這顯然是因爲它們是同一個變量。 – immibis
是的,我剛剛意識到它並更改了代碼(更新)。 – husna