Problem mit char* (inkonsistenz)
-
Hallo!
Ich wandle folgendermaßen int in char* um:
settings[i].value = itoa(intResult, str, 10);
printf gibt mir den richtigen Wert (50) in der Console aus:
printf("\nVALUE: %s", settings[i].value);
Danach wir das Array an die main zurückgegeben (immer noch 50) und von dort in eine weitere Function übergeben.
In dieser Funktion "ändert" sich plötzlich der String:
printf("\nTEST 1: %s;%i", settings[15].value, strlen(settings[15].value)); printf("\nTEST 2: %s;%i", settings[15].value, strlen(settings[15].value));
Ausgegeben wird:
TEST 1: 50;2
TEST 2: ý³↑;3Das heißt das char* verändert sich irgendwie zwischen diesen beiden Outputs und ich habe keine Ahnung warum?
Any ideas?
Thanks in advance!
-
Das heißt das char* verändert sich irgendwie zwischen diesen beiden Outputs und ich habe keine Ahnung warum?
Ich auch nicht, aber ich weiß auch nicht was zwischen den beiden Outputs passiert.
Und Du wirst darauf auch keine Antwort bekommen (können).
Sieh Dir mal die Regeln zum Posten im Forum an.
-
Zeig mal kompletten Code. Oder wenn es zuviel ist, bastele ein Minimalbeispiel zusammen, dass den Fehler aufweist.
-
kaljak schrieb:
Ich wandle folgendermaßen int in char* um:
Ist dir klar, dass itoa immer sein zweites Argument zurückgibt? Was ist str?
kaljak schrieb:
Danach wir das Array an die main zurückgegeben
Was für ein Array? value kann kein Array sein.
-
Ist dir die Bedeutung der Paramter von
itoa
klar?
Wo wird denn deiner Meinung nach die Zeichenkette abgelegt?Nebenbei hat es
itoa
nicht in die Standards von C geschafft.
-
kaljak schrieb:
Danach wir das Array an die main zurückgegeben (immer noch 50) und von dort in eine weitere Function übergeben.
Daran wirds wohl liegen. itoa definiert den Zielspeicherbereich nicht selbst, den musst du reservieren und natürlich auch entsprechend angeben.
itoa(intResult, settings[i].value, 10);