我正在尝试将整数形式的端口号转换为字符串,以传递给 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/