Funkcja sprawdzająca poprawność (parsująca) adresu IP
Zamieszczam napisaną w języku C funkcję do sprawdzania poprawności (parsowania) adresu IP. Funkcja nie korzysta z wyrażeń regularnych, tak więc nie potrzeba załączać do programu żadnych dodatkowych bibliotek.
Funkcja zwraca wartość liczbową int, czyli 0 w przypadku poprawnego adresu IP na wejściu, 1 w przeciwnym wypadku.
int parse_ip(char ip[16]){
char x[4];
int j,k=0,l=0,m=0,n=0;
for(j=0;j<4;j++) x[j]=0;
for(i=0;i<16 && m!=4;i++){
if(ip[i]=='.' || ip[i]==0){
k++;
if((atoi(x)==0 && ip[i-1]!='0') || (atoi(x)==0 && l!=1)) return 1;
l=0;
if(ip[i]=='.') n++;
if(atoi(x)<0 || atoi(x)>255 || k>4 || n>3){
return 1;
}
else{
for(j=0;j<4;j++) x[j]=0;
m++;
}
}
else{
if(l<4){
x[l]=ip[i];
}
else{
return 1;
}
l++;
}
}
if(m==4) return 0;
}
Przykładowe użycie:
if(parse_ip("192.168.1.1")==0){
printf("Adres prawidłowy");
}
else{
printf("Adres błędny");
}
Działanie funkcji przetestowane, jednak zamieszczam jako wersję Beta. W przypadku napotkania błędu w działaniu proszę o kontakt.
Zawodowo inżynier informatyk, administrator sieci IT, programista, webdeveloper. Prywatnie przeciętny facet usiłujący spełnić kilka swoich marzeń. Strona powstała po to, aby podzielić się z Wami moimi osiągnięciami. Zapraszam ;)