计算 C 中的 Var Args 长度

发布于 2024-10-12 12:08:19 字数 410 浏览 7 评论 0原文

我正在尝试将 asprintf() 移植到 Windows,因为它是 Linux 上的 GCC 库函数,而 Windows 上不存在。

我一直在计算 var args 的长度,这样我就可以为它们分配内存。我尝试了两种方法:

  1. 将 var args 写入文件,然后获取函数的结果(即写入的字节数 = var args 的长度),但它很愚蠢,因为用户将在他的文件中看到内部随机数据app dir

  2. 使用函数 vsprintf() 并将 NULL 作为第一个参数(要写入输出的变量),因此它返回 var args 的长度,但这失败了,因为它仅适用于 XP、Windows 7 不允许写入 NULL 变量。

关于如何解决这个问题还有更多想法吗?

I'm trying to port asprintf() to windows, since its a GCC library function on Linux, and doesn't exist on Windows.

I'm stuck at calculating the var args' length so I can allocate memory for them. I tried two approaches:

  1. Write the var args to a file, then taking the result of the function (which is the number of bytes written = var args' length) but its silly since the user will see internal random data in his app dir

  2. Use the function vsprintf() with NULL as first parameter (the variable to write output to) so it returns the length of var args, but this one failed because it works on XP only, Windows 7 doesn't allow writing to a NULL variable.

Any more ideas on how to solve this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

乖乖兔^ω^ 2024-10-19 12:08:19

尝试使用 _vscprintf 相反,它只返回所需的计数(不包括终止 null)

Try using _vscprintf instead, it only returns the required count (not including the terminating null)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文