web-dev-qa-db-ja.com

cのファイルへの構造体の書き込み

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

例:

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

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

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

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