Eigene Eingaberoutine und leere Strings
-
Hallo!
Ich schreibe derzeitig eine eigene Eingaberoutine mit SDL, ich war mir nicht sicher, ob das hier der richtige Bereich ist, hab mir dann aber gedacht, das dem schon so ist, denn ich habe ja Probleme mit den Strings, nicht mit dem SDL.
Mein Hauptproblem ist:
Meine Variable deklariere ich so:
char ipserver[15];aber danach ist sofort irgendwas in der Variable drinne(z.Zt. ein L). Danach addiere ich per
strcat(ipserver, "1")usw. Ziffern bzw. den Punkt, jedoch kann die nun entstandene IP für
SDLNet_ResolveHost(&ip, ipserver, 1234);nicht eingesetzt werden, da immer irgendwas davor ist.
Wie kann ich dieses Problem beheben, d.h. einen völlig leeren String erstellen? Bzw. liegt es wirklich daran?
Ich würde mich sehr über eine Antwort freuen, da ich mittlerweile schon etwa 2 Stunden an dieser Eingaberoutine sitze.Zur Vollständigkeit noch die Eingaberoutine:
ende=false; while (ende==false) { while (SDL_PollEvent(&ereigniss)) { if (ereigniss.type==SDL_QUIT){ende=true;return(0);} if (ereigniss.type==SDL_KEYDOWN) { if (ereigniss.key.keysym.sym==SDLK_ESCAPE){ende=true;return(0);} if (ereigniss.key.keysym.sym==SDLK_RETURN){ende=true;} if (ereigniss.key.keysym.sym==SDLK_0){strcat(ipserver,"0");} if (ereigniss.key.keysym.sym==SDLK_1){strcat(ipserver,"1");} if (ereigniss.key.keysym.sym==SDLK_2){strcat(ipserver,"2");} if (ereigniss.key.keysym.sym==SDLK_3){strcat(ipserver,"3");} if (ereigniss.key.keysym.sym==SDLK_4){strcat(ipserver,"4");} if (ereigniss.key.keysym.sym==SDLK_5){strcat(ipserver,"5");} if (ereigniss.key.keysym.sym==SDLK_6){strcat(ipserver,"6");} if (ereigniss.key.keysym.sym==SDLK_7){strcat(ipserver,"7");} if (ereigniss.key.keysym.sym==SDLK_8){strcat(ipserver,"8");} if (ereigniss.key.keysym.sym==SDLK_9){strcat(ipserver,"9");} if (ereigniss.key.keysym.sym==SDLK_PERIOD){strcat(ipserver,".");} } } SDL_FillRect(bildschirm, NULL, SDL_MapRGB(bildschirm->format,0,0,255)); anz_txt(50,70,"Bitte geben sie hier die IP ein: "); if (sizeof(kette)>0){anz_txt(100,100,ipserver);} SDL_Flip(bildschirm); } SDLNet_ResolveHost(&ip, ipserver, 1234); sockander=SDLNet_TCP_Open(&ip);
-
char ipserver[15] = "";
-
Hi!
memset( &ipserver, '\0', 15 );Oder die bessere Lösung:
std::string ipserver( "" );grüße
-
David_pb schrieb:
...
memset( &ipserver, '\0', 15 );...
ohne & und es reicht auch einfach 0

memset( ipserver, 0, 15);oder, um sich arbeit zu ersparen:
char ipserver[15] = {0};BR
Vinzenz
-
Danke!
Funktioniert mit Memset endlich perfekt
-
memset ist hier Unsinn. Wenn dir die Initialisierung mit ="" nicht reicht, kannst du den string auch einfach mit *ipserver = 0; "löschen".
-
Wenn bei der Initialisierung nicht reicht, wäre am "logischsten", wenn man schon mit str-Funktionen arbeitet, imho
strcpy(ipserver, "");Aber std::strings wären natürlich besser
