web-dev-qa-db-fra.com

Écriture de structures dans un fichier en c

Est-il possible d'écrire une structure entière dans un fichier

exemple:

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

Est-il possible d'écrire une structure entière dans un fichier

Votre question est en train d'écrire des instances de struct dans un fichier.

  1. Vous pouvez utiliser la fonction fwrite pour y parvenir.
  2. Vous devez passer la référence dans le premier argument.
  3. sizeof chaque objet du deuxième argument
  4. Nombre de ces objets à écrire dans le 3e argument.
  5. Pointeur de fichier dans le 4ème argument.
  6. N'oubliez pas d'ouvrir le fichier dans binary mode.
  7. Vous pouvez lire des objets à partir d'un fichier en utilisant fread.
  8. Faites attention à l'endianité lorsque vous écrivez/lisez dans les petits systèmes endiens et lisez/écrivez dans les grands systèmes endiens et vice versa. Lire comment-écrire-code-agnostique-endian-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);
    }
    

Vous pouvez les lire de la même manière .... en utilisant 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