gpt4 book ai didi

无法使用 "strtok"拆分 IP 地址和端口,其中输入为 Char *

转载 作者:太空宇宙 更新时间:2023-11-04 06:26:00 30 4
gpt4 key购买 nike

我正在尝试将 IP 分成两部分,但它不起作用。谁能指出问题

    void encode_ip_with_port(unsigned char *tlvbuf) {
// 100.100.100.100:65000
// abcd:abcd:abcd:abcd:abcd:abcd:abcd:abcd:12344
// Ipv4
struct in_addr addr;
// Remove Port
char *ipv4 = NULL ;
char *port = NULL;
printf("Input : %s\n ",tlvbuf);
char input = ":";
//char str[]="this, by the way, is a 'sample'";
ipv4 = strtok(tlvbuf, &input);
port = strtok(NULL, ":");
printf("Ipv4 : %s\n",ipv4);
printf("port : %s\n",port);
if (!inet_pton(AF_INET,ipv4 , &addr)) {
fprintf(stderr, "Could not convert address\n");
}
}

此处 ipv4 正在打印 ipv4 : 100.100.100.100:65000它应该打印 100.100.100.100

最佳答案

strtok 需要一个字符串作为输入。您需要更改以下内容:

添加:

#include <string.h>

改变:

    char *input = ":";  // char --> char*
ipv4 = strtok(tlvbuf, input); // removed &

工作示例:

#include<stdio.h>
#include<string.h>
main()
{
char *ipv4, *port;
char tlvbuf[80] = "100.100.20.1:65000";
char* input = ":";
ipv4 = strtok(tlvbuf, input);
port = strtok(NULL, ":");
printf("Ipv4 : %s\n",ipv4);
printf("port : %s\n",port);
}

输出:

Ipv4 : 100.100.20.1

port : 65000

关于无法使用 "strtok"拆分 IP 地址和端口,其中输入为 Char *,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26910855/

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