hfish
02-12-2011, 15:28
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
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] << " ";
}
da come output
192 168 0 1
168 0 1
ovvero il contenuto di splitted[0] viene perso non appena cancello tempBuffer.
è sicuramente un errore del cavolo, ma ci sto smattando da due ore e non ragiono con lucidità
qualcuno mi aiuta?
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
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] << " ";
}
da come output
192 168 0 1
168 0 1
ovvero il contenuto di splitted[0] viene perso non appena cancello tempBuffer.
è sicuramente un errore del cavolo, ma ci sto smattando da due ore e non ragiono con lucidità
qualcuno mi aiuta?