C言語を始めて一か月なのですが、今、2つのテキストファイルを読み込んで、内容を比較し、一致しているようならsuccess, 間違っているなら間違っている箇所を出力するプログラムを作成しています。
ソースコードは以下の通りです。
#include <stdio.h> #include <stdlib.h> #include <string.h> FILE *f_in, *f_out ; int main(void){ char str_in[10]; char str_out[10]; int i, cmp ; f_in = fopen ("file1.txt", "r"); f_out = fopen ("file2.txt", "r"); if ( f_in == NULL || f_out == NULL){ printf( "Can't open file.\n" ); return 0 ; } while ( (fgets( str_in, 10, f_in )) != NULL && (fgets( str_out, 10, f_out )) != NULL)) { str_in[strlen(str_in) - 1] = 0 ; str_out[strlen(str_out) - 1] = 0 ; for (i=0; i < strlen(str_in) && i < strlen(str_out) ; i++) { cmp = strcmp(str_in, str_out) ; if (cmp == 0) { printf ( "success.\n" ) ; return 0 ; } else { printf ( "fail.\n" ) ; printf ( "%s and %s are mismatched.\n", str_in, str_out ) ; return 0 ; } fclose( f_in ); fclose( f_out ); } return 0 ; }仮にfile1.txtが
1
2
34
であり、file2.txtが
1
2
6
であったとすると、このプログラムを実行すると、テキストファイルが違うにも関わらず
success.
と表示されてしまいます。
(ほんとは
fail.
34 and 6 are mismatched.
と出力されてほしいのです。)
恐らく1行目しか評価されていないことが原因だと思うのですが、すべての行でstrcmpを行うにはどうしたらよいかわからず途方に暮れております。なにかよい知恵やソースコードを見て気づいたこと等ありましたら、ご教授ください。
よろしくお願いいたします。