Adresse IP entrée en C

Je veux écrire un programme en C qui prend une adresse IP d’entrée d’utilisateur puis je veux faire quelques opérations sur ce bit. Comment puis-je prendre une entrée en bits en C. J’ai essayé le code ci-dessous mais l’entier est de taille 2 octets, ce qui donne ici l’adresse complète de 8 octets (64 bits). Lorsque vous utilisez char pour parsingr une entrée, la valeur saisie est perdue. Existe-t-il un moyen de prendre une entrée en bits (je veux une adresse IPv4 32 bits en 32 bits uniquement et un V6 128 bits en 128 bits uniquement).

unsigned short int a,b,c,d; scanf("%d.%d.%d.%d", &a,&b,&c,&d); printf("%d\t%d\t%d\t%d\t", a, b, c, d); 

Merci d’avance.

 #include  int main(void) { unsigned char a,b,c,d; scanf("%hhu.%hhu.%hhu.%hhu", &a,&b,&c,&d); printf("%hhu\t%hhu\t%hhu\t%hhu\t", a, b, c, d); return 0; } 

donne

 $ gcc tc && ./a.out <<< 12.12.12.12 12 12 12 12 

Voir, par exemple, cette référence pour trouver le spécificateur à utiliser en fonction du type des variables cible (3ème table du document).