gpt4 book ai didi

c - 使用 snprintf 打印数组?备择方案?

转载 作者:太空狗 更新时间:2023-10-29 15:36:06 26 4
gpt4 key购买 nike

是否可以使用 snprintf 打印数组?我知道它可以接受多个参数,并且它期望至少与你的格式字符串建议的一样多,但如果我只给它 1 个格式字符串和一个值数组,它会把整个数组打印到缓冲区吗?

我问的原因是因为我正在修改源代码,而当前的实现只支持将一个值放在字符串中,但我正在修改它以支持一组值。我想尽可能少地改变原来的实现。

如果这不起作用,有人会推荐另一种方法吗?我是否应该接受它并使用 for 循环(如果没有字符串缓冲区,它的实际效果如何)?

本质上:将 double 组中的所有值放入同一个字符串以进行返回的最佳方法是什么?

最佳答案

不,没有格式说明符。

当然,使用循环。您可以使用 snprintf() 在它之前的一个之后打印每个 double ,因此您永远不需要复制周围的字符串:

double a[] = { 1, 2, 3 };
char outbuf[128], *put = outbuf;

for(int = 0; i < sizeof a / sizeof *a; ++i)
{
put += snprintf(put, sizeof outbuf - (put - outbuf), "%f ", a[i]);
}

以上内容未经测试,但您已了解大致情况。它用一个空格分隔每个数字,并发出一个尾随空格,这可能很烦人。

它并没有做很多事情来保护自己免受缓冲区溢出,通常对于这样的代码,您可以知道输入的范围并确保 outbuf 足够大。对于生产代码,您当然需要考虑这一点,这里的重点是展示如何解决核心问题。

关于c - 使用 snprintf 打印数组?备择方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16941859/

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