Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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.

Geschrieben

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

Geschrieben

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)

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...