问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求C语言高人帮助,纯C编写IP转换数字程序

发布网友 发布时间:2022-04-23 23:58

我来回答

2个回答

热心网友 时间:2022-04-28 02:24

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//从字串p中获取ip整数到整数数组a,成功返回0,失败返回1
int getipaddress(char *pp, int *a){
int d[5]={-1},di=1,ai=0;
int i,j,m;
char *p;
p=(char *)malloc(sizeof(char)*strlen(pp));
strcpy(p,pp);    //把来源的pp地址复制下来,要不然pp的内容可能是常数,将无法修改 

//删除p中非数字,非小数点的字符
for(i=strlen(p)-1;i>=0;i--)
if(p[i]!='.' && (p[i]<'0' || p[i]>'9'))
for(j=i;j<strlen(p);j++)
 p[j]=p[j+1];

//检查获取小数点所在的位置
if (p[0]=='.') return 1;     //小数点在第一位,错误 
for(i=0;i<strlen(p);i++)
if(p[i]=='.') {
d[di++]=i;
if (di>4) return 1;   //小数点数量超过3个,错误 
}
if (di!=4) return 1;   //小数点数量少于3个,错误 
d[4]=strlen(p);

//计算各ip的分段值
for(i=0;i<4;i++){
m=0;
for(j=d[i]+1;j<=d[i+1]-1;j++)
m=m*10+p[j]-'0';
if (m<0 || m>255) return 1; //整数的数值过大 
a[i]=m;
}
free(p);
return 0;

int main(){
int address[4];
char *p="192.168.0.1";
int i,k;
k=getipaddress(p,address);
if (k==0)
for(i=0;i<4;i++)
printf("%d ",address[i]);
else
printf("错误的ip地址\n"); 
}

追问你好,我运行之后怎么什么也不显示

追答

热心网友 时间:2022-04-28 03:42

unsigned int ip2int(const char *str) {
    int a[4];

    //64位大端对齐
    sscanf(str, "%d.%d.%d.%d", &a[3], &a[2], &a[1], &a[0]);

    unsigned int number;

    char *p = (char *) &number;

    for (int i = 0; i < 4; ++i) {
        p[i] = (char) a[i];
    }

    return number;
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
Request对象语法 9,django中request对象 塞尔达传说时之笛火之神殿Boss房间怎么去 ...的圆形地方怎么上去?打完BOSS后才发现没去过,但我 榆中兴隆山旅游路线 ...兴隆山校区到哪个公交车站最近?应该怎么乘公交车?打车的话得多少钱... 从般若寺到兴隆山法院怎么坐公交车,最快需要多久 那些属于国有经济,哪些属于集体经济 ...丢手机,生病,丢工作,怎么转运啊,谁能告诉我,我快疯了 阴历十月又叫什么月 在ASP网页中,如何显示浏览者的ip及地理位置? int *ip2[4]应该怎样初始化 java算法 将ip地址段拆分成一个个 腊肉放冷藏可以放多久? 朋友圈屏蔽了对方、给对方朋友圈点赞对方能看见吗? 蒸馒头要放多少碱? 蒸馒头放什么东西蓬松? 蒸馒头放多少合适? 重装系统键盘不能用?灯不亮,怎么这样的? windows 10 如何关闭系统键盘? 进入系统键盘不好用了 xp的系统键盘使用的快捷键都有哪些? 系统键盘怎么打开? BIOS,系统键盘是什么 系统键盘怎么调用 win7系统键盘怎么打开 收银系统键盘在哪里可以找出来 特灵*空调四面出风嵌入式空调器制热时亮红灯,不启动,是什么原因 特灵中央空调怎么调制热 特灵变频中央空调CGVR0505AANA显示18E故障代码是什么引起的? win10保存2个ip地址怎么设置,一个自动,一个是设定好的 自家晒的腊肉能放多久 IP各号段代表什么意思呢? 内外网通过ip能区分? 真空包装腊肉放冰箱里冷藏半年能吃吗 c语言以IP地址形式输出 IPAddress类的应用,构建的IPAddress[]数组要怎么添加啊? 如何计算两个IP之间的IP数量 int ip = 0x0808A8C0; 这是一个网络字节序的ip地址. 写一个函数, 将它以点分十进制的方式打印出来. java做ip转int时,碰到如下代码,对移位运算部分不太理解 保险公司会倒么 请问保险公司会不会倒闭呢?我身边的朋友不敢买保险他们老是纠结这个问题? 怎么看别人的qq达人天数 qq达人过了30怎么查看以前掉的记录? 怎么能够看到对方的qq达人天数 在生活中折叠隐形纱窗需要哪些技巧 折叠隐形纱窗型材怎么挑选的呀? 回卷隐形纱窗和折叠隐形纱窗哪个好 隐形纱窗如何穿线 光伏电站清洗比较好的方法是什么?