hola a todos,
Estoy haciendo un programa en C que debe manejar nros de IP para luego gestionar un firewall con el modulo net_filter del kernel de Linux. Dado que necesito que el mismo sea performante, debo de hacerlo en c para gestionar el uso de memoria y tal.
El problema que tengo es sinceramente muy básico, pero no logro descifrar donde esta el problema....una de las validaciones que debo hacer es la siguiente:
Formato IP válido: n1.n2.n3.n4
Ejemplos: 192.168.0.101, 255.255.255.0, 66.98.151.220, 0.0.0.0, etc
Donde "n1, n2, n3, n4" deben ser menor o igual a 255 (n<=255)
El problema es que el Nro de IP se ingresa por teclado lo almaceno en un array de tipo char, en este caso nuevaIP[15] (16 espacios: 12 para posibles nros, 3 caracteres punto "." y el final de cadena '\n')
He hecho un bucle for donde pregunto por el caracter "." sino lo encuentro debo de almacenar en una variable el primer nro, y asi consecutivamente.
Un ejemplo suponiendo que la cadena ingresada sea "192.98.151.220"
i=0;
char aux;
char trio[3];
while (nuevaIP != '\n') {
charter = ("%c", nuevaIP);
aux= ("%c", nuevaIP);
if (charter != 46) {
// aux se carga con "1", "9", y "2" antes de encontrar un punto en la cadena
aux = ("%c", aux);
// esto me da error, y si uso "atoi" tambien y sino me carga el ascii
trio = aux;
}else{
//se encontro un punto, trio debe de contener "192"
//se encontro un punto debo inicializar trio[] a cero, para
// seguir evaluando el segundo grupo de nros.
}
i++;
}
En resumen, necesito cargar una variable int ubicada entre los caracteres "." de la cadena, para luego verificar que la misma sea menor a 255.
Alguna idea para solucionar este tema? Desde ya muchas gracias por su interes,
Mis saludos;
luchot-