加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 教程 > 正文

C语言借助联合和结构体将IP地址进行打印及换行

发布时间:2021-11-12 11:28:56 所属栏目:教程 来源:互联网
导读:在每一个计算机中都有他自己的IP地址,而IP地址是如何在计算机中存储的是一直以来我们都不知道的。 在计算机中,IP地址的存放是由10进制数组组成的,而计算机将IP地址呈现给我们时则是以点分十进制表示的。 例如 IP地址为 57.163.109.40 ,其实他在计算机中

在每一个计算机中都有他自己的IP地址,而IP地址是如何在计算机中存储的是一直以来我们都不知道的。
 
在计算机中,IP地址的存放是由10进制数组组成的,而计算机将IP地址呈现给我们时则是以点分十进制表示的。
 
例如  IP地址为 57.163.109.40  ,其实他在计算机中存储的是  678273849,而计算机就是利用这个十进制数字将IP地址以点分十进制进行表示,打印在我们的面前。
 
在联合体内部将十进制数字存储起来,得到的是一个占有四个字节的整形,而最终要将每个字节用点隔开将每个字节中的二进制数字打印出来,形成我们所看见的形式。在联合体中,存储一个int整型和四个char类型时,只开辟四个字节的空间,而这时int和char其实是公用这四个字节的空间,char就是int,int就是char,所以通过ji将一个数存进int类型后,再将这个数以char类型能拿来,这时拿出来的就是每个字节的数了,然后又以10进制进行打印,让IP地址呈现在我们眼前。
 
当然,打印出来的IP地址会存在大小端的问题,视情况而定。
 
#include<stdio.h>
union Ip
{
    unsigned int num;
    struct
    {
        unsigned char c1;
        unsigned char c2;
        unsigned char c3;
        unsigned char c4;
    }ip;
};
int main()
{
    union Ip my_ip;
    my_ip.num = 678273849;
    printf("%d.%d.%d.%d", my_ip.ip.c1, my_ip.ip.c2, my_ip.ip.c3, my_ip.ip.c4);
        return 0;
}
如下图,没有换行
 
C语言利用联合和结构体将IP地址进行打印及换行
 
很多情况下,我们使用缩进是为了便于代码阅读,针对上述的字符串换行,我们可以采用另外的方式处理
 
加上n
 
在printf("%d.%d.%d.%dn", my_ip.ip.c1, my_ip.ip.c2, my_ip.ip.c3, my_ip.ip.c4);
 
#include<stdio.h>
union Ip
{
    unsigned int num;
    struct
    {
        unsigned char c1;
        unsigned char c2;
        unsigned char c3;
        unsigned char c4;
    }ip;
};
int main()
{
    union Ip my_ip;
    my_ip.num = 678273849;
    printf("%d.%d.%d.%dn", my_ip.ip.c1, my_ip.ip.c2, my_ip.ip.c3, my_ip.ip.c4);
        return 0;
}

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读