在C中输入IP地址

我想在C中编写一个程序,它从用户那里获取输入IP地址,然后我想对它进行一些位操作。 我怎么能用C中的位输入。我尝试了下面的代码,但整数大小为2字节,这使得这里的完整地址为8字节(64位)。 使用char扫描输入时,会丢失输入的值。 有没有办法以位为单位输入(我想要32位IPv4地址仅32位而128位V6仅128位)。

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); 

提前致谢。

 #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; } 

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

例如,请参阅此引用 ,以根据目标变量的类型(文档中的第3个表)查找要使用的说明符。