Problem beim senden von steuerzeichen an eine datei
-
Hallo erstmal
ich habe damit begonnen c zu programmieren und mir das buch "C-Programmierern von Anfang an gekauft" bei einem beispiel gibts jetzt aber ein problemvoid steuerzeichen(char *seq) { char wert; while(*seq) { /* Lies die gesamte Steuersequenz */ sscanf(seq,"%2x",&wert);/* Hole jeweils 2 Zeichen */ fprintf(text,"%c",wert);/*text zeigt auf die Datei in die geschrieben werden soll*/ seq+=2; } }
damit sollen jetzt steuerzeichen die man als Parameter angibt an die Datei formatiert ausgegeben werden.Windows motzt aber das ein Problem auftritt wenn ich das Programm ausführe.
Kann mir jemand sagen warum?
Mfg Soad51
-
Du hast zu wenig Platz bereitgestellt, um die eingelesenen Daten unterzubringen - sscanf("%2x",&wert) erwartet die Adresse eines int-wertes als Ziel.
-
wie rufst du die funktion auf? der string muss z.b. aus lauter 2-stelligen hexziffern bestehen...
-
wenn ich die funktion mit "" aufrufe arbeitet sie normal ansonsten läuft die while schleife ewig und es wird irgendwann aus einem anderen string als dem parameter der wert für "wert" genommen.
-
im buch wurde er mit "1B2873313648" aufgerufen um die schrift zu ändern.
-
Wie ich schon sagte: dein 'char wert;' ist zu klein, um die Rückgabe des sscanf()-Aufrufes zu erfassen, deshalb überschreibst du irgendwelche fremden Speicherbereiche - eventuell sogar Teile des übergebenen Parameters). Ersetz mal die erste Zeile der Funktion durch 'int wert;', dann sollte es klappen.
-
Danke windows motzt jetzt nicht mehr aber die variable wert behält immer den wert 0 und das verändert sich auch nicht nach dem sscanf().
-
Hmm, da solltest du mal nachsehen, was scanf() für einen Rückgabewert liefert.
(btw, wo hast du denn festgestellt, daß der Wert sich nicht ändert?)
-
hab einfach nach jedem durchgang mit printf den wert als zeichen ausgegeben
-
habs jetzt hinbekommen schönen dank.
-
kleine frage noch der verständnis halber :wieso konnte ich die hexzahl nicht im char speichern sie stand doch für ein einzelnes zeichen?