Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Errore funzione di verifica
Forum - C/C++ - Errore funzione di verifica

Avatar
jaco94++ (Normal User)
Expert


Messaggi: 203
Iscritto: 22/10/2008

Segnala al moderatore
Postato alle 20:46
Lunedì, 22/08/2011
Salve =)
Ho un problema con una funziona che verifica se la stringa immessa è un indirizzo ipv4 corretto, non trovandone una ho pensato di scriverne una funziona il fatto e che funziona come dire quasi sempre tipo 127.0.0.1 lo riconosce ma ad esempio per lui 98.8.109.255 non è valido! come posso risolvere ? ecco il codice :
Codice sorgente - presumibilmente C#

  1. bool ipv4(string ip)
  2.     {
  3. short dotidx=0;
  4.         short nbridx=0;
  5.         bool  cmpl=false;
  6.         string max_range="";
  7.  
  8.         for(unsigned int i=0;i<ip.size();i++)
  9.         {
  10.             if(ip.at(i)>='0'&&ip.at(i)<='9')
  11.             {
  12.                 nbridx+=1;
  13.                 cmpl=true;
  14.                 max_range+=ip.at(i);
  15.                 if(max_range>"255")
  16.                 {
  17.                     return false;
  18.                 }
  19.                 else if(nbridx>=4)
  20.                 {
  21.                     return false;
  22.                 }
  23.             }
  24.             else if(ip.at(i)=='.')
  25.             {
  26.                 cmpl=false;
  27.                 max_range.clear();
  28.                 dotidx+=1;
  29.                 nbridx=0;
  30.             }
  31.             else
  32.             {
  33.                 return false;
  34.             }
  35.         }
  36.         if(dotidx==3&&cmpl==true){return true;} else {return false;}
  37.     }




Ultima modifica effettuata da jaco94++ il 22/08/2011 alle 20:49
PM
Avatar
delta (Member)
Rookie


Messaggi: 37
Iscritto: 25/08/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 21:41
Lunedì, 22/08/2011
io controllerei la riga 15

Codice sorgente - presumibilmente C/C++

  1. if(max_range>"255")
  2.     return false;



a naso è meglio fare
Codice sorgente - presumibilmente C/C++

  1. if( itoa( max_range.c_str() ) > 255 ) //mi sembra che così si possa fare
  2.     return false;


o comunque con una funzione che restituisca il valore "intero" contenuto in max_range.

non ho testato, ma penso che potrebbe essere quello il problema

Sembra funzionante grazie =) - jaco94++ - 22/08/11 22:02
comunque ho usato atoi non itoa ! - jaco94++ - 22/08/11 22:03
si si giusto, mi sono confuso :D - delta - 22/08/11 22:17


PM