判断一个字符串是否是域名或者IP的小程序

原创 2012年03月22日 10:46:52

int _IsValid(char *str)   //检测给函数传递的参数格式是否正确  1为IP 2为域名
{
 int Num = 0;   //字符串中数字出现的次数
 int StrCount = 0;  //字符串总字数
 int point = 0;   //字符串中 . 出现的次数
 int Word = 0;   //字符串中字母出现的次数
 int FormatError = 0; //如果字符串中有2个连续的 - 则出错返回
 char *ForCheck = NULL; //字符指针
 char CopyStr[255] = ""; //把传进来的字符串进行处理,大写变小写

 if (str[strlen(str)-1] == '\n')  //如果参数中有 \n 则删除
  str[strlen(str)-1] = '\0';

 if(!strcpy_s(CopyStr,255,str))
 {
  return -1;   //如果字符串大小超过255 那么不是一个域名,更不是一个IP
 }
 
 for(int i = 0;i<255;i++)
 {
  if( CopyStr[i] >= 97 && CopyStr[i] <= 122 )
  {
   CopyStr[i] -= 32;
  }
 }

 while((*ForCheck) != NULL)
 {
  if ( ((*ForCheck) >= '0'&& (*ForCheck) <= '9'))
  {
   FormatError = 0;
   Num++;
  }
  else if ((*ForCheck) == '.')
  {
   FormatError = 0;
   point++;
  }
  else if(  ( (*ForCheck) >= 'a' && (*ForCheck) <= 'z') )
  {
   FormatError = 0;
   Word++;
  }
  else if ((*ForCheck) == '-' )
  {
   FormatError++;
   
   if(FormatError > 1)   //连续2次出现 - 则出错返回
   {
    return -1;
   }
  }
  else       //出现其他符号,直接返回错误
   return -1;
  

  StrCount++;
  ForCheck++;
 }

 if (((Num+point) == StrCount )&& ( point == 3 ) )  //如果为IP地址 那么 . 和数字的和应该等于字符串大小
 {
  return 1;
 }
 else if (  (Num+point+Word) == StrCount )   //如果字符串由三种元素组成,那么判断是否是域名
 {
  ForCheck = str;

  if (point == 1 || point == 2)         //如果有以下后缀 那么肯能是个域名
  {    
   if( strstr(ForCheck,".com")  || strstr(ForCheck,".net") ||   
    strstr(ForCheck,".org")  || strstr(ForCheck,".edu") ||
    strstr(ForCheck,".mil")  || strstr(ForCheck,".gov") ||
    strstr(ForCheck,".biz")  || strstr(ForCheck,".info")||
    strstr(ForCheck,".name") || strstr(ForCheck,".pro") ||
    strstr(ForCheck,".aero") || strstr(ForCheck,".coop")||
    strstr(ForCheck,".museum") )
   {
    return 2; //是否为域名,利用gethostbyname函数的返回值来判断
   }
   else
    return -1;
  }
  else
   return -1;

 }

 return -3; //程序意外退出
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

面试题整理17 输入一个字符串判断一个字符串是否是有效ip地址

题目:输入一个字符串判断字符串是否为有效ip地址,  ip地址的形式为XXX.XXX.XXX.XXX。对于XXX表示为0-256的数,但是如果第一位是0而且整数不为0则是非法的,如01 不允许...

判断一个IP地址是否是内网地址

void vAdjustIP(std::string& paraStrIP) { std::string strTemp[5] ; int i = 0 ; strTemp[i] = strt...

java中判断字符串是否是一个整数

转自:http://blog.sina.com.cn/s/blog_6e9c16890100na5q.html 1.使用类型转换判断 try { S...

Java中怎样判断一个字符串是否是数字

本文转载自点击打开链接 1.用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = 0; i ...

判断一个字符串是否是数值

Validate if a given string is numeric. Some examples: "0" => true " 0.1 " => true "abc" => false 不...

C实例--判断一个字符串是否是回文数

回文是指顺读和反读内容均相同的字符串,例如”121”,”ABBA”,”X”等。本实例将编写函数判断字符串是否是回文。引入两个指针变量,开始时,两个指针分别指向字符串的首末字符,当两个指针所指字符相等时...

MFC中 如何判断一个字符串是否是有效的目录 或盘符

MFC中如何判断一个字符串是否是合法目录或盘符呢,网上的方法倒是不少,不过大多长篇大论,探讨的太深了,问题越搞越复杂了,今天就将我的收获分享 第一种: WIN32_FIND_DATA wfd; ...
  • Link_
  • Link_
  • 2011-09-29 16:58
  • 3896

C#根据域名查询IP(CMD命令参数输入或者启动程序后再输入查询)

有时因为需要,希望知道域名的IP,那用C#怎么实现呢?以下是实现代码 using System; using System.Collections.Generic; using System.Linq...

用C语言程序判断一个字符是否是字母或数字

原文来自C语言中文网 怎样判断一个字符是否是一个字母? 字母表中的所有字母(包括计算机键盘上的所有键)都被赋予了一个值,这些字符及其相应的值一起组成了ASCII字符集,该字符集在北美、欧洲和许多...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)