/*****************************************************************
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;
}
笔试:使用fprintf和sscanf 判断IP字符串的正确性和数字IP之间的转换
最新推荐文章于 2023-07-12 21:15:17 发布