Sin mas aquí el código.
Código
#include <stdio.h> #include <string.h> int atonum (int numero); main(int argc, char *argv[]) { unsigned int a=0; unsigned int b=0; unsigned int c=0; unsigned int d=0; int cont=0; int tri=0; int i=0; long int ipn; char *s; if(argc!=2) { return(0); } //mas de 15 caracteres, el maximo posible 3 //puntos mas 12 numeros 15 caracteres total { return (0); } // me fijo que todos los craracteres que componene el string sean validos //para una direccion ip { if (atonum(argv[1][i])==-1 ) { return(0); } if (atonum(argv[1][i])!=-1 ) { } } i=0; //me fijo que la cantidad de campos sea 4 { if (atonum(argv[1][i])==46 ) { cont++; } if (cont>3 ) { return (0); } } i=0; cont=0; // me fijo que todos los campo no posean mas de 3 numeros { if (atonum(argv[1][i])!=46) { if (cont>=3) { } cont++; } if (atonum(argv[1][i])==46) { cont=0; } } if (a>256 || b>256 || c>256 || d>256 ) { return(0); } ipn=(a<<24)+(b<<16)+(c<<8)+d; } int atonum (int numero) { int n; if ( (numero-48)>=0 && (numero-48)<=9) {n=numero-48;} if ( numero==46) {n=46;} // si el caracter es un punto se retorna el mismo valor if ((numero-48)<0 && (numero-48)>9) {n=-1;} return (n); }
Espero criticas, opiniones, correcciones (que ya estoy viendo varias para hacer pero bueno).
Desde ya muchas gracias por su tiempo y colaboración.
EI: juntando mensajes.
Por cierto me olvidaba, compilado en código c en bloodshed dev c++ 3.99.