Olá @Baracat,
Um dica para simplificar o parsing do IP é utilizand o sscanf():
$ ./ip2int 192.168.0.1
192.168.0.1 -> 3232235521
Segue o código:
#include <stdio.h>
#include <string.h>
int main(int argc, char **argv)
{
if (argc != 2) {
printf ("Use: %s <IP>", argv[0]);
return 0;
}
unsigned int ip[4];
if (sscanf(argv[1], "%d.%d.%d.%d", &ip[0], &ip[1], &ip[2], &ip[3]) != 4) {
puts ("Invalid IP format (xxx.xxx.xxx.xxx).");
return -1;
}
printf ("%s -> %u", argv[1],
(ip[0] << 24) +
(ip[1] << 16) +
(ip[2] &l