Hola, estoy haciendo un programa en C que trabaja con ficheros de entrada y salida pero no se acceder a lo que necesito. Dentro del fichero de entrada hay varias líneas con 3 campos: nombre, tipo y dirección.
Por ejemplo:
www.google.es A 130.206.193.53
www.youtube.com A 211.132.198.42
Bien, yo para manejarlo mejor, cojo la primera linea y la paso a una cadena de caracteres con fgets. Una vez tengo la cadena compruebo que el tipo es correcto (sólo puede haber dos tipos, o A o B) con strchr.
El problema viene con la dirección, pues tengo que comprobar que no se salga del rango 0-255, que no aparezca un 5º número (130.210.222.32.1), etc... Resumiendo, que tenga el formato de una dirección IP.
No se muy bien como mirar eso, lo que se me va ocurriendo acaba en un código enorme y dudo que sea así.
A ver si alguien puede echarme una mano. Todo esto es para comprobar que no hay errores y después crear una lista con nodos de tres cadenas de caracteres una para cada campo.
EDITO:Acabo de ver que con fscanf puedo separar los campos, por ejemplo:
char cadena[100];
char cadena2[100];
int valor;
...
fscanf (f, "%[a-z0-9]:%d:%[a-z0-9]\n", cadena, &valor, cadena2);
Pero claro, mi fichero de entrada va separado con espacios y si pongo más espacios o tabulaciones también tendría que funcionar:
www.google.es A 130.206.193.53
www.youtube.com A 211.132.198.42
Además de que seguiría desconociendo el tema de saber si el formato de la IP es correcto.
Perdón por el doble post, es por no borrar todo lo anterior ni llenarlo de EDITO.
Creo que si alguien me explica como meter cada campo en una cadena de caracteres sabría seguir, vamos, que si tengo "
www.google.es A 130.206.193.53" como meto
www.google.es en una cadena, A en otra y 130.206.193.53 en otra.