写一段判断IP地址字符串为IPV4地址还是IPV6地址的C语言代码
时间: 2023-06-13 08:06:42 浏览: 207
以下是一个简单的判断IP地址字符串为IPV4地址还是IPV6地址的C语言代码:
```c
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
bool is_ipv4(char *ip_str) {
int len = strlen(ip_str);
int num = 0, dots = 0;
for (int i = 0; i < len; i++) {
if (ip_str[i] == '.') {
num = 0;
dots++;
continue;
}
if (ip_str[i] < '0' || ip_str[i] > '9' || dots > 3) {
return false;
}
num = num * 10 + (ip_str[i] - '0');
if (num > 255) {
return false;
}
}
return dots == 3;
}
bool is_ipv6(char *ip_str) {
int len = strlen(ip_str);
int colon_count = 0;
for (int i = 0; i < len; i++) {
if (ip_str[i] == ':') {
colon_count++;
continue;
}
if ((ip_str[i] >= '0' && ip_str[i] <= '9') ||
(ip_str[i] >= 'a' && ip_str[i] <= 'f') ||
(ip_str[i] >= 'A' && ip_str[i] <= 'F')) {
continue;
}
return false;
}
return colon_count == 7;
}
int main() {
char ip_str[100];
printf("Enter IP address: ");
scanf("%s", ip_str);
if (is_ipv4(ip_str)) {
printf("This is an IPV4 address.\n");
} else if (is_ipv6(ip_str)) {
printf("This is an IPV6 address.\n");
} else {
printf("This is not a valid IP address.\n");
}
return 0;
}
```
该程序先接收用户输入的IP地址字符串,然后使用is_ipv4()函数和is_ipv6()函数来判断该字符串是否为IPv4地址或IPv6地址。其中is_ipv4()函数检查IP地址字符串是否包含三个点号和四个数字段,每个数字段在0到255之间;is_ipv6()函数则检查IP地址字符串是否包含七个冒号和十六进制数字和字母。最后,根据函数的返回值输出相应的结果。
阅读全文