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

如题最好有个简单的对话框通过输入IP操作来实现,谢谢... 如题
最好有个简单的对话框通过输入IP操作来实现,谢谢
展开
 我来答
mr_shj
推荐于2018-03-22 · TA获得超过2682个赞
知道大有可为答主
回答量:1665
采纳率:94%
帮助的人:1381万
展开全部
#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"); 
}
追问
你好,我运行之后怎么什么也不显示
追答

孤鸿海上来o
2018-03-20
知道答主
回答量:1
采纳率:0%
帮助的人:887
展开全部
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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式