itoa für hexadezimalen string

Gast #2239784
Lesenswert?

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
Gast #2239811
Lesenswert?

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
#2239820
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren