Seite 1 von 2
Adressen aus Datei lesen
Verfasst: So Okt 26, 2014 11:28 pm
von Ostrich
Hallo
hatten das Thema schonmal, aber ich bekomme es nicht hin.
Ich habe ein Hex File (siehe Anhang)
aus diesem Möchte Ich ab Adresse 80 4 Byte lesen. sprich: DD 47 2C 44
Diese sollen jeweils in eine variable (oder ein Array) gespeichert werden.
Ich habe das hier mal angefangen.
Code: Alles auswählen
#include <stdio.h>
int main()
{
int n=0;
int start=128;
char chr1[5];
FILE *file1;
file1=fopen("1a.bin","rb");
fseek(file1, 0, SEEK_END);
printf("Die Datei ist %ld Bytes gross!!\n\n", ftell(file1));
while (n<4)
{
fseek(file1, start, SEEK_SET);
chr1[n]=getc(file1);
fprintf(file1,"%x",chr1[n]);
n++;
printf("Zeichen %d ist %x\n",n,chr1[n]);
}
return 0;
}
Problem ist, dass ich nicht die gewünschten Hx-Werte ausgegeben bekomme.
ich habe die Bin datie angehangen. allerdings als txt umbenannt
Re: Adressen aus Datei lesen
Verfasst: Mo Okt 27, 2014 12:13 am
von cloidnerux
Code: Alles auswählen
fseek(file1, 0, SEEK_END);
printf("Die Datei ist %ld Bytes gross!!\n\n", ftell(file1));
while (n<4)
{
fseek(file1, start, SEEK_SET);
Dateien werden mit einem quasi Pointer ausgelesen. Diesen Pointer kannst du mit fseek auf Positionen setzten.
Wenn du jetzt aber den Pointer erst auf das Ende setzt und dann noch 80 Byte weiter versuchst sinnvolle Daten auszulesen, dann wird das nix.
Erst den "Pointer" wieder auf Anfang setzten:
Re: Adressen aus Datei lesen
Verfasst: Mo Okt 27, 2014 2:32 am
von Xin
cloidnerux hat geschrieben:Dateien werden mit einem quasi Pointer ausgelesen. Diesen Pointer kannst du mit fseek auf Positionen setzten.
Wenn du jetzt aber den Pointer erst auf das Ende setzt und dann noch 80 Byte weiter versuchst sinnvolle Daten auszulesen, dann wird das nix.
Erst den "Pointer" wieder auf Anfang setzten:
Er setzt den Pointer mit fseek( file1, start, SEEK_SET ) doch?
SEEK_BEGIN!?
Ostrich hat geschrieben:aus diesem Möchte Ich ab Adresse 80 4 Byte lesen. sprich: DD 47 2C 44
Diese sollen jeweils in eine variable (oder ein Array) gespeichert werden.
...
Problem ist, dass ich nicht die gewünschten Hx-Werte ausgegeben bekomme.
Code: Alles auswählen
apoc:Downloads xin$ hexdump 1a.txt
0000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000010 00 00 00 00 02 00 00 00 a8 61 00 00 00 00 02 00
0000020 00 00 a8 61 f8 7f f8 7f 0f 00 00 00 71 02 e2 04
0000030 53 07 35 0c 6a 18 9f 24 09 3d 3e 49 73 55 e4 57
0000040 55 5a c6 5c 37 5f a8 61 00 00 00 00 00 00 00 00
0000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000060 00 00 00 00 00 00 0f 00 00 00 71 02 e2 04 53 07
0000070 35 0c 6a 18 9f 24 09 3d 3e 49 73 55 e4 57 55 5a
0000080 c6 5c 37 5f a8 61 f8 7f f8 7f f8 7f f8 7f f8 7f
0000090 f8 7f f8 7f f8 7f f8 7f f8 7f f8 7f f8 7f f8 7f
00000a0 f8 7f f8 7f 0f 00 00 00 71 02 e2 04 53 07 35 0c
00000b0
Das könnte daran liegen, dass die gewünschten Hexwerte auch nicht in der Datei sind!?
Was bekommst Du denn? ^^
Re: Adressen aus Datei lesen
Verfasst: Mo Okt 27, 2014 8:50 am
von cloidnerux
Er setzt den Pointer mit fseek( file1, start, SEEK_SET ) doch?
SEEK_BEGIN!?
Ja, mein Fehler. Ich bin glaube ich zu viel in anderen Sprachen unterwegs...

Re: Adressen aus Datei lesen
Verfasst: Mo Okt 27, 2014 9:38 am
von Ostrich
Hallo
Ja sorry hab die Falschen 4 Byte raus kopiert. Aber grundsätzlich war das ja auch nur als Beispiel gedacht.
Ich denke auch, das mit fseek( file1, start, SEEK_SET ) ja von start an gesetzt wird? Oder wird es wirklich auf addiert?
Re: Adressen aus Datei lesen
Verfasst: Mo Okt 27, 2014 9:58 am
von cloidnerux
Ich denke auch, das mit fseek( file1, start, SEEK_SET ) ja von start an gesetzt wird? Oder wird es wirklich auf addiert?
Das ist schon richtig, ich habe einen Gedankenfehler gehabt.
Re: Adressen aus Datei lesen
Verfasst: Mo Okt 27, 2014 11:22 am
von oenone
sicher, dass das fprintf in die datei selbst schreiben soll? das verändert doch den inhalt...
Re: Adressen aus Datei lesen
Verfasst: Mo Okt 27, 2014 12:45 pm
von Ostrich
Ahh stimmt
Wie hat sich das da rein geschlichen
Das würfelt alles natürlich durcheinander
Aber dennoch klappt es nicht.
Selbstwenn ich eine Textdatei mit einfachem Inhalt "1234567890" nehme kommt nur müll raus
Re: Adressen aus Datei lesen
Verfasst: Mo Okt 27, 2014 1:04 pm
von cloidnerux
Selbstwenn ich eine Textdatei mit einfachem Inhalt "1234567890" nehme kommt nur müll raus
Was erwartest du, was kommt heraus?
Re: Adressen aus Datei lesen
Verfasst: Mo Okt 27, 2014 7:20 pm
von Xin
Ostrich hat geschrieben:Ahh stimmt
Wie hat sich das da rein geschlichen
Das würfelt alles natürlich durcheinander
Aber dennoch klappt es nicht.
Selbstwenn ich eine Textdatei mit einfachem Inhalt "1234567890" nehme kommt nur müll raus
Bei einer solch kurzen Datei wirst Du beim 128. Zeichen auch nix finden. Wenn Du denn Quelltext änderst, poste die Änderung bitte auch. Wenn Du die Erwartung änderst, teile das Bitte auch mit und schreib was du stattdessen als Ergebnis bekommst.
Ansonsten weiß keiner, worauf man einzugehen hat.