gpt4 book ai didi

c - 在 C 中解析字符串的最简单方法是什么?

转载 作者:行者123 更新时间:2023-12-04 11:42:24 26 4
gpt4 key购买 nike

我必须在 C 中解析这个字符串:

XFR 3 NS 207.46.106.118:1863 0 207.46.104.20:1863\r\n

并且能够得到 207.46.106.118部分和 1863部分(第一个IP地址)。

我知道我可以逐个字符地查找并最终找到我的方法,但是考虑到字符串中的 IP 地址可以更改为不同的格式(数字较少),获取此信息的最简单方法是什么?

最佳答案

您可以使用 sscanf()来自 C 标准库。下面是一个如何将 ip 和端口作为字符串获取的示例,假设地址前面的部分是常量:

#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;
}

格式字符串的重要部分是扫描集模式 %15[0-9.]%5[0-9] ,这将分别匹配由数字或点组成的最多 15 个字符的字符串(即不会检查 IP 地址的格式是否正确)和最多 5 个数字的字符串(这意味着 2^16 以上的无效端口号 - 1 会漏掉)。

关于c - 在 C 中解析字符串的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2827714/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com