Hex2Bin Converter Fehler

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Gottvonallem
Beiträge: 286
Registriert: 20.10.2006 20:46:21

Hex2Bin Converter Fehler

Beitrag von Gottvonallem » 06.04.2007 16:25:52

Ich brauche einen Hex2Bin Converter der alle Hexzahlen aus einem File ausließt und sie in Binärzahlen umgewandelt entweder in ein File oder auf die Standardausgabe schreibt.Da ich keinen gefunden hab, hab ich selbst einen geschrieben, doch der möchte nciht so wie ich will. Der über Kommandozeile übergebene Filename wird nicht geöffnet sondern mysteriöserweise immer NULL. ich hab schon die gnze Zeit nach dem Bug gesucht und finde ihn nicht. Schaut euch bitte mal den Sourcecode an, hoffentlich findet ihr den Fehler.
Achso das ganze ist in C geschrieben.
LINK: http://bttec.org/homebenjamin/convert.c

mfg Benjamin


PS: Ich weiß der gesamte Code ist eher suboptimal, ist halt ein 10-Minutenprodukt.[/url]

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 06.04.2007 16:36:01

im Optionstring scheint nach dem "i" ein ":" zu fehlen

Gruß
gms

[edit]
vielleicht kann ich dir doch noch weiter behilflich sein:

auf der Suche nach zusätzlichen Fehlern bin ich auch gleich fündig geworden:
a) ein vergleich von "char" mit "char*" wird zu keinem vernüftigen Ergebnis führen:
wie z.B. hier:

Code: Alles auswählen

     if(c == "0") {fprintf(output,"0000");}
b) wozu soll dieser Code gut sein ?

Code: Alles auswählen

while((c = fgetc(file)) != "0") {}
fseek(file,1, SEEK_CUR);
abgesehen, daß du hier auch mit "0" statt mit '0' vergleichst, wenn keine '0' in der Datei drinnen steht, hast du hier eine Endlosschleife
c) die zwei Ausgabeblöcke ( printf vs fprintf ) kannst du zusammenfassen, wenn du vorher ein

Code: Alles auswählen

if ( output == NULL ) output=stdout;
einfügst
d) filename kann NULL sein
[/edit]

Gottvonallem
Beiträge: 286
Registriert: 20.10.2006 20:46:21

Beitrag von Gottvonallem » 06.04.2007 17:05:54

Den Fehler mit dem : hab ich mittlerweile auch entdeckt.

Code: Alles auswählen

while((c = fgetc(file)) != "0") {}
fseek(file,1, SEEK_CUR); 
Dieser Code geht die Datei solange durch bis der Anfang einer hexadezimalen Zahl auftritt (also =x...).

Danke für den Tipp mit dem

Code: Alles auswählen

if ( output == NULL ) output=stdout; 
.

Danke für die Hilfe ich hoffe es geht jetzt.( ich hab lange nciht mehr in C geproggt muss jetzt wieder mal reinkommen.)

mfg Benjamin

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 06.04.2007 17:15:50

Gottvonallem hat geschrieben:

Code: Alles auswählen

while((c = fgetc(file)) != "0") {}
fseek(file,1, SEEK_CUR); 
Dieser Code geht die Datei solange durch bis der Anfang einer hexadezimalen Zahl auftritt (also =x...).
unter der Annahme, daß du folgendes meinst:

Code: Alles auswählen

while((c = fgetc(file)) != '0') {}
fseek(file,1, SEEK_CUR); 
und folgende Input-Datei verwendest:

Code: Alles auswählen

01234
Ist das erste Zeichen, welches du "umwandelst" die "2"

Gottvonallem
Beiträge: 286
Registriert: 20.10.2006 20:46:21

Beitrag von Gottvonallem » 06.04.2007 17:23:19

nter der Annahme, daß du folgendes meinst:
Code:

while((c = fgetc(file)) != '0') {}
fseek(file,1, SEEK_CUR);


und folgende Input-Datei verwendest:
Code:

01234

Ist das erste Zeichen, welches du "umwandelst" die "2"
Genau richtig. Ist wie gesagt bloß da um den Anfang der hexadezimalen Kette zu finden.

Antworten