您的位置:首页 > 编程语言 > C语言/C++

笔试:使用fprintf和sscanf 判断IP字符串的正确性和数字IP之间的转换

2013-04-19 16:58 411 查看
/*****************************************************************
sscanf(const char *buffer,const char *format,[argument ]...)
它的返回值是参数的数据,也就是argument的个数,
buffer:存储的数据,format:格式控制字符串,argument:选择性设定字符串。
******************************************************************/

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
bool isIP(char *str)
{

int a,b,c,d;
int ret=0;
int len=strlen(str);
str[len]='\0';
ret=sscanf(str,"%d.%d.%d.%d",&a,&b,&c,&d);
if(ret==4&&(a>=0&&a<=255)&&(b>=0&&b<=255)&&(c>=0&&c<=255)&&(d>=0&&d<=255))
return 1;
else
return 0;
}
char  *value_to_ip(const long& nValue,char *strTemp)
{
sprintf( strTemp,"%ld.%ld.%ld.%ld",
(nValue&0xff000000)>>24,
(nValue&0x00ff0000)>>16,
(nValue&0x0000ff00)>>8,
(nValue&0x000000ff) );
return (strTemp);
}
int main(void)
{
char table[4][15]={"192.168.1.1","0.0.0.0","19999.11.11","199111057239"};
for(int i=0;i<4;i++)
cout<<isIP(table[i])<<endl;

long int num[4]={0,18224001830,2010021050021,610};
char temp[64]={0};
for(int i=0;i<4;i++)
cout<<value_to_ip(num[i],temp)<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  笔试面试 算法 C C++