gpt4 book ai didi

c - 如何防止缓冲区溢出将 double 转换为 char?

转载 作者:太空宇宙 更新时间:2023-11-04 00:19:42 24 4
gpt4 key购买 nike

我正在将 double 转换为 char 字符串:

char txt[10];
double num;

num = 45.344322345

sprintf(txt, "%.1f", num);

并使用“.1f”截断小数位,保留到十分位。
即 - txt 包含 45.3

我通常在 sprintf 中使用精度来确保 char 缓冲区不溢出。我怎样才能在不使用 snprintf 的情况下也截断小数点?

(即如果 num = 345694876345.3 出于某种原因)

谢谢

编辑 如果 num is > buffer 结果不再重要,只是不想崩溃。不确定在那种情况下什么最有意义。

EDIT2 我应该比仅仅在标签中更清楚地表明这是一个 C 程序。我在 C 程序中使用 snprintf 时遇到问题。 I don't want to add any 3rd party libraries.

最佳答案

使用 snprintf() ,它会告诉您有多少字节没有被打印。通常,您应该将数组的大小设置得足够大,以处理目标整数类型的最长字符串表示形式。如果事先不知道,请使用 malloc()(或 asprintf(),这是非标准的,但存在于许多平台上)。

编辑

snprintf() 如果格式超出给定的缓冲区,将优雅地失败,它不会溢出。如果您不需要处理,那么只需使用它就可以解决您的问题。我想不出有什么情况是您不想处理的,但话又说回来,无论您在做什么,我都不会做 :)

关于c - 如何防止缓冲区溢出将 double 转换为 char?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2815310/

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