C语言字符串ip转结构体
时间: 2024-10-24 21:08:24 浏览: 21
在C语言中,要将IP地址字符串转换为结构体形式,通常会创建一个`struct`来存储IP地址信息,比如常见的`struct in_addr`,它是Linux系统中处理IP地址的标准库函数`netinet/in.h`的一部分。首先,你需要定义一个结构体来存放IP地址的四部分(通常是四个`uint8_t`或`char`),然后编写函数来解析字符串并填充这个结构体。
以下是一个简单的例子:
```c
#include <stdio.h>
#include <string.h>
#include <arpa/inet.h>
// 定义结构体来保存IP地址
typedef struct {
uint8_t addr[4];
} IPAddress;
// 函数来解析并填充结构体
IPAddress ip_from_string(char* str_ip) {
char *endptr;
if (inet_pton(AF_INET, str_ip, &((IPAddress*)NULL)->addr) == 1) {
return (IPAddress){str_ip};
} else {
fprintf(stderr, "Invalid IP address: %s\n", str_ip);
return (IPAddress){0}; // 返回无效的IP结构体
}
}
int main() {
char str[] = "192.168.1.1";
IPAddress ip_address = ip_from_string(str);
for (int i = 0; i < 4; i++) {
printf("Address part %d: %u\n", i+1, ip_address.addr[i]);
}
return 0;
}
```
在这个例子中,`inet_pton`函数用于从文本字符串转换到网络字节顺序(IPv4)。如果输入不是有效的IP地址,该函数会返回0,我们检查这个返回值并报告错误。
阅读全文