ho bisogno di una funzione che prenda in input un char* contenente un indirizzo ipv4 (192.168.27.35) e un vettore di quattro char* in cui inserire i quattro ottetti (192, 168, 27 e 35)
il comportamento di strtok è alquanto strano, in quanto modifica l'argomento che gli viene passato: non posso quindi usare strtok con il mio buffer di ingresso (toSplit), ma devo prima effettuarne una copia (tempBuffer) e quindi passare quest'ultima a strtok
il problema si crea quando cancella l'oggetto dinamico appena creato
da come outputcodice:void splitCharIpAddress (char* toSplit, char* splitted[4]) { char* tempBuffer = new char[strlen (toSplit) + 1]; strcpy (tempBuffer, toSplit); splitted[0] = strtok (tempBuffer, "."); for (int i = 1; i < 4; i++) splitted[i] = strtok (NULL, "."); for (int i = 0; i < 4; i++) cout << splitted[i] << " "; cout << endl; delete tempBuffer; for (int i = 0; i < 4; i++) cout << splitted[i] << " "; }
ovvero il contenuto di splitted[0] viene perso non appena cancello tempBuffer.codice:192 168 0 1 168 0 1
è sicuramente un errore del cavolo, ma ci sto smattando da due ore e non ragiono con lucidità
qualcuno mi aiuta?