gpt4 book ai didi

c - 如何直接为 vscanf/vprinf 创建一个参数列表?

转载 作者:太空宇宙 更新时间:2023-11-04 03:10:41 27 4
gpt4 key购买 nike

我知道如何相应地从 printf 的实现中调用 vprintf 等。

但是如果我想在代码中动态创建一个参数列表,尤其是对于 vsscanf,我知道它们都是指针怎么办?

是否有一些合理的可移植方式可以将动态分配和填充的指针数组(实际上是 std::vector)转换为 va_list?

这就是我可以在末尾添加一个 %n 参数并检测实际消耗了多少输入,以便在我自己的类似 FILE 的包装器中为 ftell 提供答案。

除了用 pipe 做一些毛茸茸的事情;或编写我自己的实现;或拆分字符串并一次执行一个参数;我不知道还有什么方法可以检测输入流的使用情况,尤其是对于 sscanf。因此,为此目的的其他想法可能很有趣。

最佳答案

参数列表,无论是固定大小还是可变大小,都是静态编译时实体。所以在运行时你可以读取它们,但不能创建。请改用常规指针。

va_list 的唯一目的是通过参数进行迭代,因为没有其他任何东西可以提供对它们的持久访问。因此,将其视为语言特定功能的回旋处(传递比原型(prototype)中指定的参数更多的参数的可能性),而不打算在其他任何地方使用。

关于c - 如何直接为 vscanf/vprinf 创建一个参数列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56668465/

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