IP地址判斷有效性

jopen 9年前發布 | 2K 次閱讀 C/C++

#include "IPAddressValid.h"

include <stdio.h>

include <iostream>

using namespace std;

bool isOnePartValid(const char* cOnePartIPAddr, int len)//判斷一個字段是不是合法 { if (NULL == cOnePartIPAddr || len <= 1) { return false; } if ('0' == cOnePartIPAddr[0] && 2 != len)//以0開頭的字段不為0非法 { return false; } int ipAddr =0; int iCur = 0;

while ('\0' != cOnePartIPAddr[iCur])
{
    if ('0'<= cOnePartIPAddr[iCur] && cOnePartIPAddr[iCur] <='9')
    {
        ipAddr = ipAddr*10 + cOnePartIPAddr[iCur]- '0';
    }
    else
    {
        return false;
    }
    iCur++;
}
if (ipAddr >= 0 && ipAddr <=255)
{
    return true;
}
else
{
    return false;
}

}

bool isIPAddressValid(const char pszIPAddr) { // 請在此處實現 if (NULL == pszIPAddr) { return false; } int l = strlen(pszIPAddr); if (l <7 || l > 15) { return false; } int iCur =0; int iIpLen =0; while (' ' == pszIPAddr[iCur])//去除前面空格 { iCur++; iIpLen++; } int begin = iCur; while ('\0' != pszIPAddr[iCur]) { iCur++; iIpLen++; } int end = iIpLen; for (int i = iIpLen-1 ; i >= begin; --i)//去除字符串尾部的空格 { if (' ' == pszIPAddr[i]) { end--; } else { break; } } char cOnePart[128]; int count = 0; for (int i = begin; i <= end; i++) { memset(cOnePart, 0, sizeof(char) 128); int iOnePartCur =0; int onePartLen =0; while (i < end && '.' != pszIPAddr[i]) { cOnePart[iOnePartCur] = pszIPAddr[i]; iOnePartCur++; i++; onePartLen++; } cOnePart[iOnePartCur] = '\0'; onePartLen++; if (!isOnePartValid(cOnePart, onePartLen)) { return false; } else { count ++; } } if (4 == count ) { return true; } else { return false; } }

int main() { const char* pazIPAddress = "100.0.0.";

bool isIP = isIPAddressValid(pazIPAddress);
return 0;

}</pre>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!