View Full Version : [C] estrarre IP da una stringa
bouncey2k
16-01-2009, 14:13
Ciao a tutti.
Ho una stringa del tipo: "ABC 1 AB INDIRIZZO-IP:PORTA 1 ABC" da cui vorrei estrarre l'inidirizzo IP ed in un secondo momento (magari con lo stesso metodo) estrarre anche la porta e salvare entrambi in due variabili.
Considerando che la prima parte è costante ("ABC 1 AB") avevo pensato di estrarre i primi Tot caratteri (compreso l'IP) e poi eliminare la prima parte, ma poiché l'indirizzo IP cambia, potrei avere sequenze di una, due o tre cifre tra un punto e l'altro dell'indirizzo ip, percui l'ip potrebbe venirmi troncato.
Qualche idea? Magari suggerendomi qualche comando.
Grazie.
Ciao a tutti.
Ho una stringa del tipo: "ABC 1 AB INDIRIZZO-IP:PORTA 1 ABC" da cui vorrei estrarre l'inidirizzo IP ed in un secondo momento (magari con lo stesso metodo) estrarre anche la porta e salvare entrambi in due variabili.
Considerando che la prima parte è costante ("ABC 1 AB") avevo pensato di estrarre i primi Tot caratteri (compreso l'IP) e poi eliminare la prima parte, ma poiché l'indirizzo IP cambia, potrei avere sequenze di una, due o tre cifre tra un punto e l'altro dell'indirizzo ip, percui l'ip potrebbe venirmi troncato.
Qualche idea? Magari suggerendomi qualche comando.
Grazie.
è un po una rottura di scatole ma usando strchr arrivi al risultato voluto.
http://www.cplusplus.com/reference/clibrary/cstring/strchr.html
bouncey2k
16-01-2009, 14:36
è un po una rottura di scatole ma usando strchr arrivi al risultato voluto.
http://www.cplusplus.com/reference/clibrary/cstring/strchr.html
Ma come faccio ad iniziare la ricerca dal 10imo carattere? Ho visto che la funzione strchr mi cerca un determinato carattere all'interno di una stringa, ma in che maniera ottengo le varie parti dell'ip seperate dal carattere punto (.) ?
Ciao a tutti.
Ho una stringa del tipo: "ABC 1 AB INDIRIZZO-IP:PORTA 1 ABC" da cui vorrei estrarre l'inidirizzo IP ed in un secondo momento (magari con lo stesso metodo) estrarre anche la porta e salvare entrambi in due variabili.
Considerando che la prima parte è costante ("ABC 1 AB") avevo pensato di estrarre i primi Tot caratteri (compreso l'IP) e poi eliminare la prima parte, ma poiché l'indirizzo IP cambia, potrei avere sequenze di una, due o tre cifre tra un punto e l'altro dell'indirizzo ip, percui l'ip potrebbe venirmi troncato.
Qualche idea? Magari suggerendomi qualche comando.
Grazie.
per prima cosa, immaginando che la stringa sia in un array di char.. eliminerei la prima parte che è costante copiando il resto in un'altra stringa così:
char* stringa2 = (char*)malloc(sizeof(char[50]));
strncpy(stringa2, &stringa[9], 50);
dove stringa contiene la stringa che vuoi analizzare
dopodichè si procede usando strtok:
char* ip = strtok(stringa2, ":");
char* port = strtok(NULL, " ");
con la stessa funzione puoi anche separare le varie parti dell'ip (doc: http://www.manpagez.com/man/3/strtok/ )
altrimenti si puó usare anche sscanf con un format string del genere: "ABC 1 AB %u.%u.%u.%u:PORTA 1 ABC"
invece per prelevare anche la porta: "ABC 1 AB %u.%u.%u.%u:%u 1 ABC"
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.