gpt4 book ai didi

c++ - 对 sprintf 可变参数使用一个指针

转载 作者:行者123 更新时间:2023-11-28 05:15:03 25 4
gpt4 key购买 nike

我正在编写一个函数,它接受一个可变参数列表并从中生成一个格式化的字符串。问题是,我使用 sprintf 创建字符串,我需要在编程时明确列出所有参数

sprintf(string, format, a0, a1, a2, ...);

关于 cppreference然而 sprintf 的描述说,那......

... (additional arguments) Depending on the format string, the function may expect a sequence of additional arguments, each containing a value to be used to replace a format specifier in the format string (or a pointer to a storage location, for n).

我的理解是,我可以将所有数据存储到一个指针位置并将指针交给 sprintf。

int arr[X];
arr[0] = a0;
...
sprintf(string, format, &arr);

尝试导致意外行为。只有数字被写入字符串。

它实际上是这样工作的吗?是否有更好的解决方案?

我的第一次尝试是将每个可变参数分别添加到字符串中,但这会产生对 sprintf 的大量调用,这是我想避免的。

是否可以将可变参数列表从一个函数传递到另一个函数?

最佳答案

好吧……我为什么不早点发现这个……我的解决方案是使用 vsnprintf 而不是 sprintf。这样就可以将 va_list 传递给格式化的字符串函数并且它是安全的。

How to pass variable number of arguments to printf/sprintf

关于c++ - 对 sprintf 可变参数使用一个指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42850999/

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