gpt4 book ai didi

c - 将 C 中的变量参数传递给 printf/vsprintf

转载 作者:行者123 更新时间:2023-11-30 16:06:32 25 4
gpt4 key购买 nike

我试图将我得到的变量参数传递给我调用的另一个函数。我编写了一个示例代码来测试这一点。为什么下面的代码中 my_printf 可以工作,但 my2_printf 不能工作?

#include <stdio.h>
#include <stdarg.h>

my2_printf(const char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
printf(fmt, ap);
va_end(ap);
}

my_printf(const char *fmt, ...)
{
va_list ab;
va_start(ab, fmt);
vfprintf(stdout, fmt, ab);
va_end(ab);
}

main()
{
int i = 5;
my_printf("This is a test %d => %s\n", i, "done");
my2_printf("This is a test %d => %s\n", i, "done");
}

我得到的输出如下:

This is a test 5 =>  done
This is a test -171084944 =>

最佳答案

因为有 printf 的变体需要一个 va_list 参数。如果您有 va_list,则必须使用带有 v 前缀的函数,例如 vprintf .

printf的调用导致undefined behavior .

关于c - 将 C 中的变量参数传递给 printf/vsprintf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59926373/

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