C语言用sscanf解析出字符串" inet 192.168.1.195 netmask 255.255.255.0 broadcast 192.168.1.255\n"中的ip地址和掩码
时间: 2024-09-28 07:06:34 浏览: 64
C语言字符串数字提出.zip
在C语言中,你可以使用`sscanf`函数结合`%[^ ]`格式说明符来解析这样的字符串。首先,假设你想分别提取IP地址和掩码,可以设置两个独立的变量来接收它们:
```c
char input[] = " inet 192.168.1.195 netmask 255.255.255.0 broadcast 192.168.1.255\n";
char ip[INET_ADDRSTRLEN], mask[INET_ADDRSTRLEN]; // 分别存放IP和掩码
// 使用sscanf解析输入字符串
if (sscanf(input, "inet %[^ ] %s netmask %[^ ] %s", ip, NULL, mask, NULL) == 4) {
printf("IP地址: %s\n", ip);
printf("掩码: %s\n", mask);
} else {
printf("解析失败\n");
}
```
在这个例子中,`%[^ ]`会尝试找到"inet"和"netmask"这两个词之后的第一个空格,并停止匹配,然后将剩余的部分赋值给相应的数组。注意,这里假设了IP地址和掩码都是四位数,因此用了`INET_ADDRSTRLEN`来确保足够的空间。
阅读全文