我想在C语言中编写一个程序,从用户处接收IP地址输入,然后对其进行一些位操作。我该如何在C语言中以位为单位接收输入?我尝试了下面的代码,但整数的大小为2个字节,这使得完整的地址长度为8个字节(64位)。使用char扫描输入时,会丢失输入的值。有没有办法只以32位(IPv4)或128位(IPv6)的方式接收输入?
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);
事先感谢您。
inet_addr()
函数解析点分十进制。 - Barmarunsigned short int
的格式说明符应为%hu
。%d
期望的是signed int
。 - alk