私の C 演習では、2 つのテキスト ファイルを 1 行ずつ比較する必要があります。
私の計画は次のとおりです。
まず、fgets() 関数を使用して、文字列の時点で 1 行を読み取ります
次に、sscanf() 関数を使用して文字列を解析 (空白を無視) し、それらを比較します。
ただし、コードが文字列 (行) の最初の単語を読み取っただけで、間違った結果が得られたという問題がありました。しかし、コードを変更すると、常に「ファイルが異なります」と表示されます。私を助けてください。私のロジックは間違っています >< これが私のコードです
int comp_line(FILE *fp1, FILE *fp2){
char l1[1024];
char l2[1024];
char w1[1024];
char w2[1024];
char *c1;
char *c2;
/*initialize*/
c1 = fgets(l1,1024,fp1);
c2 = fgets(l2,1024,fp2);
sscanf(w1,"%1023s",l1);
sscanf(w2,"%1023s",l2);
while (c1 != NULL && c2 != NULL && strcmp(w1,w2) == 0)
{
c1 = fgets(l1,1024,fp1);
c2 = fgets(l2,1024,fp2);
sscanf(w1,"%1023s",l1);
sscanf(w1,"%1023s",l1);
if(c1 != NULL && c2 == NULL)
{
printf("EOF 2");
return 0;
}
if(c1 == NULL && c2 != NULL)
{
printf("EOF 1");
return 0;
}
}
if(strcmp(w1,w2) == 0)
{
printf("\nfiles are equal");
return 0;
}
else
{
printf("\nfiles different");
return 1;
}
return 0;
}
どうもありがとうございました!