我必须在C中解析这个字符串:
XFR 3 NS 207.46.106.118:1863 0 207.46.104.20:1863\r\n
Run Code Online (Sandbox Code Playgroud)
并且能够获得207.46.106.118部分和1863部分(第一个IP地址).
我知道我可以通过char查找char并最终通过它查找,但是获取此信息的最简单方法是什么,因为字符串中的IP地址可能会更改为不同的格式(数字更少)?
Chr*_*oph 11
您可以使用sscanf()C标准库.这是一个如何将ip和port作为字符串的示例,假设地址前面的部分是常量:
#include <stdio.h>
int main(void)
{
const char *input = "XFR 3 NS 207.46.106.118:1863 0 207.46.104.20:1863\r\n";
const char *format = "XFR 3 NS %15[0-9.]:%5[0-9]";
char ip[16] = { 0 }; // ip4 addresses have max len 15
char port[6] = { 0 }; // port numbers are 16bit, ie 5 digits max
if(sscanf(input, format, ip, port) != 2)
puts("parsing failed");
else printf("ip = %s\nport = %s\n", ip, port);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
格式串的重要部分是扫描集模式%15[0-9.]和%5[0-9],这将匹配的数字或点(即IP地址将不会为良好性检查)由至多15个字符的字符串和至多5个数字的串分别(这意味着超过2 ^ 16-1的无效端口号将会漏掉).
| 归档时间: |
|
| 查看次数: |
4124 次 |
| 最近记录: |