代码是从键盘输入一个0-(4,294,967,296-1)以内的数(因为ip的长度为32位,因此输入的数不能超出2^32),然后输出对应的IP地址与对应的IP地址所在的分类
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <stdlib.h>
int main()
{
while(1)
{
unsigned int num = -1;
printf("请输入一个无符号整数(0结束):");
int ret = scanf("%d",&num);
if(num==0)
break;
if(ret == 0)
{
printf("赋值失败!请重新启动程序\n");
break;
}
uint32_t nstr = htonl(num);
struct in_addr in;
in.s_addr = nstr;
char *p = inet_ntoa(in);
printf("%s\n",p);
int a = atoi(p);
if(0<=a && a<128)
printf("A类地址\n");
else if(a<192)
printf("B类地址\n");
else if(a<223)
printf("C类地址\n");
else if(a<239)
printf("D类地址\n");
else if(a<247)
printf("E类地址\n");
else
printf("输入的数非地址,请重新输入\n");
}
return 0;
}