2016-06-30 20 views
0

Ich habe ein Problem beim Lesen von Hex-Daten aus einer .log-Datei, die in der Befehlszeile angegeben wurde. Es druckt nur etwa 30 Zeilen vor und dann beendet. Kann mir jemand helfen zu verstehen, warum das passiert? Ich brauche es, um alle Hex-Daten aus der Eingabedatei zu drucken.Fehler beim Lesen der Hex-Daten aus der .log-Datei

int byte; 
FILE *Inputfile = stdin; 
char *filename = argv[1]; 
Inputfile = fopen(filename, "r"); 

while((byte = fgetc(Inputfile)) != EOF) 

    { 
     printf(" %02x",byte); 
    } 

    fclose(Inputfile); 

Vielen Dank,

EDIT: Eingabedatei ist eine Datei, die in .log einem Hex-Editor wie folgt aussieht: Input data

+0

Können Sie Ihre Eingabedaten posten? Sie sollten 'fopen' zurückgeben. – LPs

+0

Bitte testen Sie den Wert von 'argc', bevor Sie auf 'argv [1]' zugreifen, und testen Sie den Wert von 'Inputfile', bevor Sie' fgetc' aufrufen. –

+0

Es die verknüpfte Datei die reale Datei, die Sie öffnen? – LPs

Antwort

1

Auf Windows-Systemen Lesen einer Textdatei wird beendet, wenn die Daten 0x1a wird aus der Datei gelesen. Dies ist der gleiche Wert wie das Ctrl-Z Ende der Datei, wenn es auf der Tastatur eingegeben wird.

Beispieldatei Daten lesen, nachdem im Binär-Modus zu öffnen:

41 42 43 44 1a 45 46 47 

Beispieldatei gelesenen Daten nach dem Öffnen im Textmodus:

41 42 43 44 

Bitte öffnen Sie die Datei in Binär-Modus.

Inputfile = fopen(filename, "rb"); 

Auf anderen Systemen könnte es ein anderer EOF-Marker sein.