0

CでUnixのようなユーティリティを作成する必要がありcmpます.cmpは2つのファイルを比較し、異なる最初の文字の数を出力します。

cmp [-s] file1 file2 [SKIP1] [SKIP2]

私はすべてうまくいきましたが、文字をスキップすると、いくつかの問題が発生します。 n 文字後SKIP1の比較に使用され、n 文字後の比較に使用されます。file1SKIP2file2

コードの一部:

...
while ((fgets(filebuff,  MAXLINE, file1)) != NULL && 
       (fgets(filebuff2, MAXLINE, file2)) != NULL)
{
    ++linepos;
    same = compare_str(filebuff, filebuff2); // my function that return 0 if equal and change pos of first diff element 
    if (same != 0)
    {
        fclose(file1);
        fclose(file2);
        printf("differ: char %i, line %i\n",charpos,linepos);
        return 1;
    }
}
fclose(file1);
fclose(file2);
return 0;

SKIP1 や SKIP2 からの開始と比較する方法がわかりません。

while ((fgets(filebuff, MAXLINE, file1))!=NULL && (fgets(filebuff2, MAXLINE, file2)) != NULL)

このコードは、ファイルを 1 行ずつ読み取り、すべてのファイルから両方の行を読み取り、関数に送信します。比較機能を変更したくありません。カット済みの紐を送る必要があります。n の位置からループを開始するかもしれfgets()ませんが、方法がわかりません。

4

0 に答える 0