INT to CHAR Zugriffsverletzung

WorldRacer

Erfahrenes Mitglied
Hallo,

hab versucht mit itoa und sprintf_ eine Int-Var in eine Char-Var umzuwandeln.

Code:
int mausx, mausy;
char *mx;
char *my;
SDL_GetMouseState(&mausx, &mausy);
sprintf_s(mx, sizeof(mausx), "%s%d",10,mausx);
sprintf_s(my, sizeof(mausx), "%s%d",10,mausy);

Mit SDL_GetMouseState werden die Maus-Koordinaten in Form von Integerwerten ermittelt und mittels Pointer gespeichert. Dies funktioniert auch einwandfrei, was ich im Debugmodus erkennen konnte. In einem Fall waren die Koords: 560:150. So gut, so weit. Aber sobald er sprintf_s (oder itoa) anwenden soll, gibts eine Meldung: Zugriffsverletzung.

Unbehandelte Ausnahme bei 0x1029e9ee in MaFirstAdventure.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x0000000a.

Immer an der selben Stelle...Somit auch immer dieselbe Meldung. Warum? Bitte helft mir.
 
Hi.

Die Variablen mx und my sind Zeiger. Zeiger müssen immer vor Benutzung initialisiert werden. Sonst haben sie die Angewohnheit irgendwohin zu zeigen, nur nicht auf gültigen Speicher.

Dann übergibst du das Integer-Literal 10 an Stelle eines Strings? :confused: Das ist gar keine gute Idee.

Dort als 2 Parameter sizeof(mausx) zu übergeben ist auch falsch. Dort muss die Größe des Buffers auf den der erste Parameter zeigt übergeben werden.

C:
char mx[20], my[20];

sprintf(mx, "%d", mausx);

// bzw. für die sichere MS Variante:
sprintf_s(mx, sizeof(mx)/sizeof(*mx), "%d", mausx);
Gruß
 
Zuletzt bearbeitet:
Zurück