1

非常に単純なファイル読み取り/書き込みプログラムを C で作成しています。コードをテストしようとすると、期待どおりの出力が得られません。これが私のコードです:

#include <stdio.h>

void hwrite(FILE *fp, int count, char *str) {
        fprintf(fp, "%d ""%s", count, str);
}

void hread(FILE *fp) {
        if(fp != NULL) {
                char line [128];
                while(fgets(line, sizeof line, fp) != NULL) {
                        fputs(line, stdout);
                }
                fclose(fp);
        }
        else {
                perror("xxx.txt");
        }
}

int main(void) {
        int count = 1;
        char *str = "test text\n";
        FILE *fp;

        fp = fopen("xxx.txt", "a");
        int i;
        for (i = 0; i < 3; i++) {
                hwrite(fp, count, str);
                count = count+1;
        }
        fp = fopen("xxx.txt", "r");
        hread(fp);
        return 0;
}

プログラムは問題なくコンパイルされます。次に、a.out コマンドを 1 回実行しますが、出力はありません。もう一度やり直して、アウトプットはありますが、完全ではありません。ここ:

[xxxxx xxx]> a.out
[xxxxx xxx]> a.out
1 test text
2 test text
3 test text

次に、ファイルを開いてこれを見つけます。

1 test text
2 test text
3 test text
1 test text
2 test text
3 test text

出力にそれが表示されないのはなぜですか? 御時間ありがとうございます。

4

1 に答える 1