心情还是不好!就想了想另一道简答题 是判断一个char* 字符串 是否为ip地址:
实现 bool is_ip_addr(char * addr); 再晒晒代码 写的不好 也别见怪!
#include <iostream>
using namespace std;
bool is_ip_addr(char* addr);
int is_number(char c);
int main()
{
char * addr = ".243.45.33";
if(is_ip_addr(addr)) {
cout << addr << " is a ip address"<< endl;
}
else
{
cout << addr << " isn't a ip address"<< endl;
}
return 0;
}
bool is_ip_addr(char* addr)
{
int index = 0;
int time = 0;
char c = *( addr + index );
int sum = 0;
while( c != '\0')
{
if(c == '.' && index != 0)
{
time ++; //统计.出现的次数
if(!(sum < 256)) //判断数字是否超过上限255
{
return false;
}
sum = 0;
}
else
{
int num = is_number(c);
if(num != -1)
{
sum = sum * 10 + num;//分段累加求和
}
else
{
return false;
}
}
index ++ ;
c = *( addr + index );
}
if(!(sum < 256))
{
return false;
}
if(time != 3)
{
return false;
}
return true;
}
int is_number(char c) //char转数字 失败就返回-1
{
if(c <= '9' && c >= '0') {
return c - '0';
}
return -1;
}