stranger4u Geschrieben 24. August 2002 Teilen Geschrieben 24. August 2002 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
nic_power Geschrieben 24. August 2002 Teilen Geschrieben 24. August 2002 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
stranger4u Geschrieben 24. August 2002 Autor Teilen Geschrieben 24. August 2002 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) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.