Schreiben von Structs in eine Datei in c [closed]

Lesezeit: 3 Minuten

Benutzer-Avatar
amarVashishth

Ist es möglich, eine ganze Struktur in eine Datei zu schreiben

Beispiel:

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

Benutzer-Avatar
Pinker Panther

Ist es möglich, eine ganze Struktur in eine Datei zu schreiben

Ihre Frage schreibt eigentlich Strukturinstanzen in eine Datei.

  1. Sie können verwenden fwrite Funktion, um dies zu erreichen.
  2. Sie müssen die Referenz im ersten Argument übergeben.
  3. sizeof jedes Objekt im zweiten Argument
  4. Anzahl solcher Objekte, die in das dritte Argument geschrieben werden sollen.
  5. Dateizeiger im 4. Argument.
  6. Vergessen Sie nicht, die Datei zu öffnen binary mode.
  7. Mit fread können Sie Objekte aus einer Datei lesen.
  8. Seien Sie vorsichtig mit Endianness, wenn Sie in Little-Endian-Systemen schreiben/lesen und in Big-Endian-Systemen lesen/schreiben und umgekehrt. Lesen Sie, wie man Endian-agnostischen-CC-Code schreibt

    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);
    }
    

Sie können sie auf die gleiche Weise lesen …. mit 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);

  • Auch bei Strukturpolstern sollte er zumindest vorsichtig sein

    – Giorgi Moniava

    2. April 2015 um 21:34 Uhr

  • Ich habe auch einige C-Objekte in die Datei geschrieben und möchte sie zurücklesen und verarbeiten. Aber ich weiß nicht, welche Objekte in die Datei geschrieben wurden, es könnte jedes sein, also würde ich die Größe von () des Objekts, das ich gelesen habe, nicht kennen. Wie kann man auch genau ein Objekt auf einmal lesen? Wie fread könnte den Anfang und das Ende von Bytes in einer Datei kennen, die Objektgrenzen darstellt?

    – Abhishek Sagar

    27. März 2017 um 3:55 Uhr

  • Ich denke, wenn das der Fall ist, sollte es eine Struktur für die Datei geben, sagen wir zum Beispiel, Sie schreiben den Typ in eine Zeile und das Objekt in eine andere Zeile usw., dann können Sie aus dem Programm basierend auf dem Typ die Größe kennen ..

    – Pinker Panther

    27. März 2017 um 7:12 Uhr


  • Warum wird in meinem Fall dieses Skript nur einiges speichern O�[name���)�����������.N=�'@�����������V)�mailH��)�� @���� @@б���` ? Is this because the character encoding is wrong, or else?

    – gabor aron

    Oct 29, 2018 at 18:35

  • @gaboraron The file written isn’t meant be read by text editors because it’s a serialized form of the in objects. If you want to read it you need to write a C program to read it. You need to look for the end of file. You should look into the output of fread. Look here: msdn.microsoft.com/en-us/library/kt0etdcs.aspx. Generally if it’s positive then something is read.

    – pinkpanther

    Oct 30, 2018 at 18:27

1384530cookie-checkSchreiben von Structs in eine Datei in c [closed]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy