Adressen aus Datei lesen

Schnelle objektorientierte, kompilierende Programmiersprache.
Ostrich
Beiträge: 23
Registriert: Fr Okt 03, 2014 2:57 pm

Adressen aus Datei lesen

Beitrag von Ostrich » So Okt 26, 2014 11:28 pm

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
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Adressen aus Datei lesen

Beitrag von cloidnerux » Mo Okt 27, 2014 12:13 am

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:

Code: Alles auswählen

fseek(file1, 0, SEEK_BEGIN);
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Adressen aus Datei lesen

Beitrag von Xin » Mo Okt 27, 2014 2:32 am

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:

Code: Alles auswählen

fseek(file1, 0, SEEK_BEGIN);
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? ^^
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Adressen aus Datei lesen

Beitrag von cloidnerux » Mo Okt 27, 2014 8:50 am

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... :oops:
Redundanz macht wiederholen unnötig.
quod erat expectandum

Ostrich
Beiträge: 23
Registriert: Fr Okt 03, 2014 2:57 pm

Re: Adressen aus Datei lesen

Beitrag von Ostrich » Mo Okt 27, 2014 9:38 am

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?

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Adressen aus Datei lesen

Beitrag von cloidnerux » Mo Okt 27, 2014 9:58 am

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.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
oenone
Beiträge: 223
Registriert: Do Sep 01, 2011 2:42 pm
Wohnort: Bremen
Kontaktdaten:

Re: Adressen aus Datei lesen

Beitrag von oenone » Mo Okt 27, 2014 11:22 am

sicher, dass das fprintf in die datei selbst schreiben soll? das verändert doch den inhalt...

Ostrich
Beiträge: 23
Registriert: Fr Okt 03, 2014 2:57 pm

Re: Adressen aus Datei lesen

Beitrag von Ostrich » Mo Okt 27, 2014 12:45 pm

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

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Adressen aus Datei lesen

Beitrag von cloidnerux » Mo Okt 27, 2014 1:04 pm

Selbstwenn ich eine Textdatei mit einfachem Inhalt "1234567890" nehme kommt nur müll raus
Was erwartest du, was kommt heraus?
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Adressen aus Datei lesen

Beitrag von Xin » Mo Okt 27, 2014 7:20 pm

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.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten