2016-06-30 5 views
1

私は2つのテキストファイル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); 
} 
+0

f1からtempまでの行を読み込みます。次に、f2からtempに行を読み込みます。次に、tempとtempに同じ文字列が含まれているかどうかをチェックします。同じ文字列であるため、明らかに同じ文字列が含まれています。 – immibis

+0

はい、私はそれを実現し、コード(更新)を変更しました。 – husna

答えて

1

はこれを試してみてください:f1はnullに等しくない場合

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"); 
       } 
     } 

} 
+0

fgets(t1,1000、fp1)、なぜ100よりも1000です。 – denis

+0

ありがとうございました! –

+0

変数char temp [100]は使用されません。また、定数として100の代わりにsizeof(t1)を使用する方が良いでしょう。 – Beka

0

いけないは、コピーwhileループ のT1を使用しますf1からtemp1の最初の文字列 同様に、f2.txtがnullでない場合、f2からtemp2へのcipyの最初の文字列 strcmp(temp1、temp2)を使用して文字列temp1とtemp2を比較する f1.txtまたはf2.txt nullに等しくなる

+0

あなたの答えを詳述してください。これは他の人が同じ問題を抱えている場合に役立ちます。 –

+0

http://stackoverflow.com/a/38114757/6529466 –

+0

私のコンセプトは、リンク先のコードと同じです –