对 sprintf 可变参数使用一个指针
Use one pointer for sprintf variadic argument
我正在编写一个函数,它接受一个可变参数列表并从中生成一个格式化的字符串。问题是,我使用 sprintf 来创建字符串,我需要在编程时明确列出所有参数
sprintf(string, format, a0, a1, a2, ...);
然而,关于 cpp偏好 sprintf 的描述说,那......
。(附加参数) 根据格式字符串,函数可能需要一系列附加参数,每个参数都包含一个用于替换的值 格式字符串中的格式说明符(或指向存储位置的指针,表示 n)。
我的理解是,我可以将所有数据存储到指针位置并将指针交给 sprintf。
int arr[X];
arr[0] = a0;
...
sprintf(string, format, &arr);
尝试此操作会导致意外行为。只有数字被写入字符串。
它真的以这种方式工作吗,是否有更好的解决方案?
我的第一次尝试是将每个可变参数单独添加到字符串中,但这产生了很多对 sprintf 的调用,这是我想要避免的。
是否可以将可变参数列表从一个函数传递到另一个函数?
好的...为什么我没有早点发现这个... 我的解决方案是使用vsnprintf
而不是sprintf
。这样就可以将va_list传递给格式化的字符串函数,并且它是安全的。
如何将可变数量的参数传递给printf/sprintf
相关文章:
- 修改函数中的指针(将另一个指针作为参数传递)
- 将指针分配给另一个指针时会发生什么情况?
- C++将一个指针分配给另一个指针时执行的类型检查
- 更改一个指针后更改乘法对象
- 从另一个指针指向函数的指针
- 有没有办法在同名类 (c++) 中为对象分配一个指针变量
- 为什么通过定义另一个指针单元格,整个代码停止工作?
- C:试图将指针值复制到另一个指针中,得到可修改的左值错误
- C++ typedef 函数指针,并在一个语句中声明一个指针
- 一个对象的两个指针.删除了一个指针,对象仍然存在
- 如何获得GUID编码器,如果我在IMFTransform上有一个指针?
- 我不明白我的错误需要返回一个指针数组
- 使用 SFINAE 测试是否可以将一个指针类型static_cast到另一个指针类型
- 将指针分配给另一个指针时会发生什么情况?
- 如何保存指针地址,以便另一个指针可以继续处理它
- 为什么 std::span 是一个指针 + 大小而不是两个迭代器
- 类的成员应该是一个指针
- 隐式指针变量,在自动定义中具有另一个指针变量
- 利用双重链接列表中的下一个指针
- 你能把一个指针投射到数组中吗?