Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Probleme mit fread/fwrite

Empfohlene Antworten

Veröffentlicht

Hi,

ich habe ein ziemlich großes Problem mit dem Lesen und Schreiben von Dateien. Und zwar schreibe ich mit fwrite den Inhalt einer Struktur in eine Datei. Diese wird dann vom Hauptprogramm mit fread gelesen. Klappt auch wunderbar. Aber wenn ich dann die geschrieben Datei + Hauptprogramm auf anderen Rechnern ausprobiere klappt das auslesen bei manchen nicht richtig, viele Werte sind dann einfach falsch. Z.B. wird aus 4.0 in der Datei 0.0 in der Struktur.

In einem anderen Forum sagte man mir, das könne an der CPU liegen und ich solle mich #pragme pack(1) das Byte alignment ändern. Habe das versucht, es geht aber immer noch nicht.

Wenn ich die Datei zum Erstellen der Datei mit den Struktur Daten auf den besagten Rechnern ausführe, die die Datei nicht lesen konnten, dann können diese auf einmal wunderbar die Daten auslesen. Es scheint also wirklich an der CPU oder der Art, wie diese Daten auf dem REchner gelesen/geschrieben werden zu liegen.

Kann man das irgendwie umgehen? Warum muß ich mich übgehaupt selber darum kümmern? Wie sieht es mit C++ Dateistreams aus? Würden die den gleichen Fehler erzeugen? Oder Windows Datei Funktionen? Oder geht das mit dem Pragma doch vielleicht irgendwie?

Wäre für jede Hilfe dankbar. Kann doch nicht angehen, dass man nichtmal Dateien auf unterschiedlichen Rechnern lesen kann.

Poste doch mal Deine Struktur. Es kann eine Menge Möglichkeiten geben, warum das nicht funktioniert. Beispielsweise die Byteorder (auf welchen Systemen probierst Du denn? Ich vermute mal, 1x Intelbasiert und das zweite eine SUN oder HP Unix-Workstation?). Da Du 4.0 erwartest, nehme ich an, dass Du mit Fliesskommazahlen arbeitest? Je nach System (und auch Compilereinstellungen) koennen die internen Darstellungsweisen variieren.

Nic

Ich probiere alles auf Windows Rechnern aus. Win 2000, Win 98 and Win XP.

Hier ist meine Struktur:

#pragma pack(push)

#pragma pack(1)

typedef struct level_info

{

float initial_speed;

int level_number;

int num_lines;

int initial_lines;

int changer;

int bomb_types;

} level;

#pragma pack(pop)

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.