33

構造体全体をファイルに書き込むことは可能ですか?

例:

struct date {
    char day[80];
    int month;
    int year;
};
4

1 に答える 1

39

構造体全体をファイルに書き込むことは可能ですか?

あなたの質問は、実際に構造体インスタンスをファイルに書き込んでいます。

  1. fwrite関数を使用してこれを実現できます。
  2. 最初の引数で参照を渡す必要があります。
  3. sizeof2 番目の引数の各オブジェクト
  4. 3 番目の引数に書き込むオブジェクトの数。
  5. 第 4 引数のファイル ポインタ。
  6. でファイルを開くことを忘れないでくださいbinary mode
  7. fread を使用して、ファイルからオブジェクトを読み取ることができます。
  8. リトル エンディアン システムで書き込み/読み取りを行い、ビッグ エンディアン システムで読み取り/書き込みを行う場合、およびその逆の場合は、エンディアンに注意してください。endian-agnostic-cc-code の書き方を読む

    struct date *object=malloc(sizeof(struct date));
    strcpy(object->day,"Good day");
    object->month=6;
    object->year=2013;
    FILE * file= fopen("output", "wb");
    if (file != NULL) {
        fwrite(object, sizeof(struct date), 1, file);
        fclose(file);
    }
    

あなたは同じ方法でそれらを読むことができます....を使用してfread

    struct date *object2=malloc(sizeof(struct date));
    FILE * file= fopen("output", "rb");
    if (file != NULL) {
        fread(object2, sizeof(struct date), 1, file);
        fclose(file);
    }
    printf("%s/%d/%d\n",object2->day,object2->month,object2->year);
于 2013-06-08T07:26:57.040 に答える