0

2 つのテキスト ファイルを比較し、ファイル 1 とは異なるファイル 2 のすべてのバイトを 3 番目のファイルに書き込むプログラムを作成したいと考えています。問題は、動的に割り当てられた配列にテキスト ファイルを読み込む必要があることです。配列はバイトごとに比較され、ファイル 1 の配列とは異なるファイル 2 の配列内のバイトは、3 番目の配列に入れられます。次に、その配列を新しいテキスト ファイルにコピーします。これはどのように達成されますか?

基本的に、動的に割り当てられた配列を使用して、次のコードはどのように同じ結果を得るでしょうか?

#include <stdio.h>
int main(int argc, char *argv[])
{
    int offset;
    int ch1, ch2;
    FILE *fh1, *fh2, *fh3=stdout;
    if( argc<3 ) {
        printf("need two file names\n"); return(1);
    }
    if(!(fh1 = fopen(argv[1], "r"))) {
        printf("cannot open %s\n",argv[1]); return(2);
    }
    if(!(fh2 = fopen(argv[2], "r"))) {
        printf("cannot open %s\n",argv[2]); return(3);
    }
    if(argc>3) {
        if(!(fh3 = fopen(argv[3], "w+"))) {
            printf("cannot open %s\n",argv[3]); return(4);
        }
    }
    for(offset = 0; (!feof(fh1)) && (!feof(fh2)); offset++)
    {
        ch1=ch2='-';
        if(!feof(fh1)) ch1 = getc(fh1);
        if(!feof(fh2)) ch2 = getc(fh2);
        if(ch1 != ch2)
            fprintf(fh3,"%d:%c %c\n", offset, ch1, ch2);
        else
            fprintf(fh3,"%c\n", ch1);
    }
    return 0;
}
4

1 に答える 1