Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Zahl wird falsch in Binärdatei geschrieben

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - C
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
AEdm
Gast





BeitragVerfasst am: 21. Mai 2004 16:32   Titel: Zahl wird falsch in Binärdatei geschrieben

Hi,
habe folgendes Programm:

Code:

#include <stdio.h>

#define FILENAME "test.bin"

int main ()
{
   int zahl=0x0a;
   FILE *pfile;

   pfile = fopen (FILENAME,"w");
   fwrite (&zahl, sizeof(zahl), 1,pfile);
   fclose(pfile);

   return 0;
}



Compiliere ich nun das ganze mit gcc unter linux, dann steht in der Datei "test.bin": 0a 00 00 00 (Was auch zu erwarten ist).

Wenn ich das ganze unter Windows mit dem gcc mache, steht da: 0d 0a 00 00 00

Wieso wird da ein "0d" davorgeschoben ??

Wenn ich in den Quellcode z.B. 0x0b eingebe, klappt es wunderbar.
Ist zwar kein direktes Linuxproblem, aber ich hoffe mit kann trotzdem jemand helfen.
 

Gast






BeitragVerfasst am: 21. Mai 2004 21:21   Titel: Re: Zahl wird falsch in Binärdatei geschrieben

AEdm hat folgendes geschrieben::
Hi,
habe folgendes Programm:

Code:

#include <stdio.h>

#define FILENAME "test.bin"

int main ()
{
   int zahl=0x0a;
   FILE *pfile;

   pfile = fopen (FILENAME,"w");
   fwrite (&zahl, sizeof(zahl), 1,pfile);
   fclose(pfile);

   return 0;
}



Compiliere ich nun das ganze mit gcc unter linux, dann steht in der Datei "test.bin": 0a 00 00 00 (Was auch zu erwarten ist).

Wenn ich das ganze unter Windows mit dem gcc mache, steht da: 0d 0a 00 00 00

Wieso wird da ein "0d" davorgeschoben ??

Wenn ich in den Quellcode z.B. 0x0b eingebe, klappt es wunderbar.
Ist zwar kein direktes Linuxproblem, aber ich hoffe mit kann trotzdem jemand helfen.


das liegt an windows. das es nur bei 0x0a passiert liegt daran das es -zufälligerweise- der asci code für den zeilenvorschub. windows hängt im textmodus immer ein tabulator oder wagenrücklaufzeichen an. du kannst auf nummer sicher gehen indem du die ausgabe im binärmodus tätigst. also statt:
Code:

pfile = fopen (FILENAME,"w");


nimm

Code:

pfile = fopen (FILENAME,"wb");


damit wird die ausgabe in binärformat getätigt und es sollte klappen. der fehler lag halt darin das scheinbar standardmäßig im textmodus ausgegeben wird und windows da eigene zeichen einfügt. also merke: wann immer du daten ausgibst die reine zahlenwerte darstellen also kein text beinhalten solltest du die option "wb" benutzen in der das b für binär steht genau so geht auch "rb" was binäres lesen bedeutet.
 

AEdm
Gast





BeitragVerfasst am: 22. Mai 2004 3:40   Titel:

Super !!
Vielen Dank. Hat wunderbar geklappt.
 

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - C Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy