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

T.T*_*.T. 1 c arrays string

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

char txt[10];
double num;

num = 45.344322345

sprintf(txt, "%.1f", num);
Run Code Online (Sandbox Code Playgroud)

并使用".1f"截断小数位,到十分位数.
ie - txt包含45.3

我通常在sprintf中使用precision来确保char缓冲区不会溢出.我怎么能在这里也截断小数,而不使用snprintf?

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

谢谢

编辑如果num是>缓冲区,结果不再重要,只是不想崩溃.不确定在这种情况下最有意义的是什么.

EDIT2我应该比标签更清晰,这是一个C程序.我在C程序中使用snprintf时遇到问题.我不想添加任何第三方库.

Tim*_*ost 5

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

编辑

snprintf()如果格式超出给定的缓冲区,它将优雅地失败,它不会溢出.如果您不需要处理它,那么只需使用它就可以解决您的问题.我想不出一个你不想处理它的实例,但话又说回来,我不会在你工作的任何工作:)