在C中输入IP地址

时间:2013-10-24 05:54:32

标签: c ip bits

我想在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);

提前致谢。

2 个答案:

答案 0 :(得分:3)

#include <stdio.h>

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 t.c && ./a.out <<< 12.12.12.12
12  12  12  12

参见例如this reference,根据目标变量的类型(文档中的第3个表)查找要使用的说明符。

答案 1 :(得分:0)

使用%*c%d来忽略数字之间的点。

在这里尝试代码;

IP address program

这会将输出表示为;

enter the ip address : 23.145.189.214
the entered ip address is 23.145.189.214

在printf函数中显示地址时,请确保使用"."。如您所显示的,当输入时,点运算符不起作用是由于编译器不知道如何处理它。它显示为身份不明的字符,并且执行停止。