天天看點

【C語言】判斷字元串是否為IP位址(IPv4位址是否合法)

#include <stdio.h>
#include <string.h>

/**
 * @brief 判斷IPv4位址是否合法
 * @param ip: 待校驗的ip位址
 * @return true: 校驗成功	false:校驗失敗(IP位址不合法)
 * @author PJW
 */
void IPv4_verify(char *ip) {
    int a,b,c,d;
    char t;

	if (4 == sscanf(ip,"%d.%d.%d.%d%c",&a,&b,&c,&d,&t)){
        if (0<=a && a<=255
            && 0<=b && b<=255
            && 0<=c && c<=255
            && 0<=d && d<=255){
            printf("[%s] is valid IPv4\n", ip);
        }else{
            printf("[%s] is invalid IPv4\n", ip);
        }
	}else{
        printf("[%s] is invalid IPv4\n", ip);
	}
}

void main() {
    char ip[50]="192.1.2.3.4567";
    // char ip[50]="192.1.2.3";
    IPv4_verify(ip);
}
           

執行結果:

【C語言】判斷字元串是否為IP位址(IPv4位址是否合法)
【C語言】判斷字元串是否為IP位址(IPv4位址是否合法)
#include <stdio.h>
#include <string.h>
#include <stdbool.h>

/**
 * @brief 判斷IPv4位址是否合法
 * @param ip: 待校驗的ip位址
 * @return true: 校驗成功	false:校驗失敗(IP位址不合法)
 * @author PJW
 */
bool IPv4_verify(char *ip) {
    int a,b,c,d;
    char t;

	if (4 == sscanf(ip,"%d.%d.%d.%d%c",&a,&b,&c,&d,&t)){
        if (0<=a && a<=255
            && 0<=b && b<=255
            && 0<=c && c<=255
            && 0<=d && d<=255) {
			return true;
        }
    }
	return false;
}

void main() {
    char ip[50]="192.1.2.3.4567";
    // char ip[50]="192.1.2.3";
    
    bool res = IPv4_verify(ip);
	if(true == res){
		printf("[%s] is valid IPv4\n", ip);
	}else{
		printf("[%s] is invalid IPv4\n", ip);
	}
}
           

參考:C語言判斷一個字元串是否為IP位址

繼續閱讀