gpt4 book ai didi

linux - 将端口号转换为字符串

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

我正在尝试将整数形式的端口号转换为字符串,以传递给 getaddrinfo() 调用。我的代码看起来像这样:

#define PORT_SIZE 5

void convert(int port) {
char service[PORT_SIZE+1];
....
....
memset(service, '\0', PORT_SIZE+1);
snprintf(service, PORT_SIZE+1, "%d", port);
...
...
}

由于 linux 机器上的最大端口大小是 65535,因此将数组大小设置为五个字节来存储端口号是否正确?

谢谢!

最佳答案

没关系,如果生成的字符串长于PORT_SIZE 个字符,剩余的字符将被丢弃而不存储,只是计入函数返回的值,因此不会发生缓冲区溢出。并且在写入内容后会自动附加一个终止空字符,因此 memset() 是多余的。
或者直接调用 itoa (port, buffer, 10)

关于linux - 将端口号转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22658676/

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