Hallo zusammen, habe ein Problem bei der Umwandlung einer hexadezimalen Zahl in einen String. Der Programmcode sieht so aus: char *buffer[10]; int i; itoa(i,*buffer,16); i wird hexadezimal eingegeben. Die Ausgabe soll auch hexadezimal sein. Für 0 < i < 0x0f wird wie es sein soll "0" bis "f" ausgegeben. Problem: für i >= 0x10 wird kein Erfebnisstring mehr ausgegeben. Woran kann das liegen? Wäre toll wenn ihr mir helfen könntet. Viele Grüße, Felix
zerleg deine zahl doch einfach in die oberen und unteren bits und mach zwei mal die itoa operation.
felixw schrieb: > itoa(i,*buffer,16); Du verwendest den (uninitialisierten) Inhalt von buffer als Zeiger auf den Ausgabepuffer für itoa(). Also schreibt der das irgendwohin. Da hättest du wohl besser auf den Compiler gehört, der die Zeile moniert hat.
Hallo Andreas, Den Buffer hatte ich zwar schon initialisiert, jedoch war der initialisierte String zu kurz. Die Initialisierung sah wie folgt aus: *buffer = " "; Damit hat's nicht funktioniert. Wenn ich den String länger initialisiere, dann gehts: *buffer = " "; Danke für Deinen Tipp. Viele Grüße, Felix
felixw schrieb: > Wenn ich den String länger initialisiere, dann gehts: > *buffer = " "; Und das ist Unfug und funktioniert auf manchen Rechnern, wahrscheinlich nicht auf allen. Also zu vermeiden.... Grund: " " ist ein StringKONSTANTE, auf die dein Zeiger zeigt. Das kann -je nach System- tatsächlich konstanter Speicher zur Laufzeit sein, ein Überschreiben also erstens nicht zulässig und manchmal nicht möglich. Dafür wäre sinnvoller zu schreiben: char buffer[3]; Damit hast du eine VARIABLE.
Du musst buffer überhaupt nicht initialisieren. Es ging darum, dass du nicht die Adresse von buffer übergeben hast, sondern einen Wert, der in buffer steht. (MaWin hat schon geschrieben wie es richtig geht.) Aber da hat sich der Compiler ja garantiert beschwert.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.