我正在尝试将整数形式的端口号转换为字符串,以便传递给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,因此将数组大小设置为5个字节来存储端口号是否正确?
谢谢!
发布于 2014-03-26 19:38:45
并且在写入的内容之后会自动附加一个终止空字符,因此memset()是多余的。
或者直接给itoa (port, buffer, 10)打电话。
发布于 2014-03-26 19:48:02
我不会依赖这样的限制。也许你的程序能活10年? 20年?在amd128上运行?IPV8?int会有多少位?那会有多少个端口呢?
https://stackoverflow.com/questions/22658676
复制相似问题