gpt4 book ai didi

c - snprintf() 只读到换行符?

转载 作者:太空宇宙 更新时间:2023-11-04 01:47:39 25 4
gpt4 key购买 nike

我想通过套接字发送消息,如下所示:“USER anonymous\r\n”。为了创建格式化字符串而不是常量字符串,我使用了 snprintf()。不幸的是,它似乎没有复制换行符\n,而只是复制回车符\r

#define USERNAME_ANONYMOUS "anonymous"
[...]


// Inside a function.
int sz = snprintf(NULL, 0, "USER %s\r\n", USERNAME_ANONYMOUS);
char* username = NULL;
if ((username = calloc(sz + 1, sizeof(char))) == NULL) {
perror("Could not allocate memory");
return;
}
snprintf(username, sz, "USER %s\r\n", USERNAME_ANONYMOUS);
for (int i = 0; i <= sz; i++) {
printf("%c %d\n", username[i], username[i]);
}

输出:

U  85
S 83
E 69
R 82
32
a 97
n 110
o 111
n 110
y 121
m 109
o 111
u 117
s 115
13
0
0

最佳答案

来自 this snprintf (and family) reference :

At most bufsz - 1 characters are written.

您提供的大小必须包括终止符。您需要使用 sz + 1 来打印完整的字符串。

关于c - snprintf() 只读到换行符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50424924/

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