gpt4 book ai didi

C-vsprintf、va_list

转载 作者:行者123 更新时间:2023-11-30 20:26:12 25 4
gpt4 key购买 nike

我已经编写了这段代码,但我不确定它是否可以。

size_t sendHeaders(int fd, int seconds, const char* header1, ...) {
size_t len = 0;
char *retbuf;
va_list args;
const char* hdr;
if (header1 == NULL)
common_setErrorCode(ERROR);
return ERROR;
len = strlen(header1);
va_start(args, header1);
while ((hdr=va_arg(args,char *))!=NULL)
len += strlen(hdr);
va_end(args);
retbuf = malloc(len + 1);
if (retbuf == NULL)
common_setErrorCode(ERROR);
return ERROR;
(void) strcpy(retbuf, header1);
va_start(args, header1);
while ((hdr=va_arg(args,char *))!= NULL)
(void) strcat(retbuf, hdr);
va_end(args);
char buffer[255] = { 0, };
vsprintf(buffer, hdr, args);
if (BUFSIZ == 0) {
common_setErrorCode(ERROR);
return ERROR;
}
write(fd, buffer, strlen(buffer));
common_setErrorCode(SUCCESS);
return SUCCESS;
}

但问题是 vsprintf() 不会将任何内容打印到控制台。我会知道代码是否可以(我个人认为可以)。问候

最佳答案

当然vsprintf()不会打印到控制台,这不是它的目的。它只是构建字符串,如果您想要的话,您必须自己将其写入控制台。幸运的是你这么做了。 :) 问题可能是 stdout 是行缓冲的,假设 fd 是控制台。

此外,您还需要检查 I/O 调用是否失败。

此外,正如 Biffen 所指出的,代码中只有一个 return,这当然会在此时退出该函数。

在调试器中单步执行该函数。

关于C-vsprintf、va_list,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26379098/

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