fwrite und fread angeblich wenig 'portabel'?



  • Ich habe gelesen, dass die Funktionen fwrite() und fread() angeblich wenig portablen Code produzieren.

    Heißt das etwa, dass

    1. eine Datei, die auf System A mit fwrite() geschrieben wurde,
      auf einem System B nicht sinnvoll mit fread() gelesen werden kann?

    2. Ist sichergestellt, dass falls fwrite() auf einem System in eine Datei schreibt, wenigstens auf diesem System mittels fread() wieder die Daten sinnvoll gelesen werden können?



  • Es ist nicht portabel binäre Daten in eine Datei zu schreiben, da nicht sichergestellt ist, dass die Representation der Daten auf den Systemen A und B identisch ist. Stichwörter: Nicht spezifizierte Größe der eingebauten Datentypen, Padding bei Strukturen (und anderen), Endianess...

    Das Problem dabei ist aber nicht fread/fwrite sondern die Daten die man damit schreibt.



  • TactX schrieb:

    Das Problem dabei ist aber nicht fread/fwrite sondern die Daten die man damit schreibt.

    wenn man nur byte-arrays schreibt und liest sollte das aber überall klappen...



  • ten schrieb:

    TactX schrieb:

    Das Problem dabei ist aber nicht fread/fwrite sondern die Daten die man damit schreibt.

    wenn man nur byte-arrays schreibt und liest sollte das aber überall klappen...

    außer man hat pech und benutzt ein System, das 7Bit Bytes hat und das andere 8Bit oder 12 oder 4 😉


Anmelden zum Antworten