gpt4 book ai didi

c - sprintf 动态小数,内存违规

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

我正在尝试动态显示特定的小数位数。我用这个:

    char graduationText[1024];
sprintf("%.*f", graduationText, decimalsToShow, graduation);

但是,当程序运行时,出现内存冲突错误。所以我想知道 sprintf 是否可以管理“%.*f”,或者这是我的错误。谢谢

最佳答案

documentation for sprintf读起来像:

int sprintf(char *str, const char *format, ...);

sprintf() [et al.] ... write to the character string str.

由于 sprintf 尝试读取未初始化的内存以用作格式字符串,并尝试写入字符串文字,您遇到了未定义的行为。

但是,您应该更喜欢 snprintf 而不是 sprintf 来帮助您避免缓冲区溢出问题。

int r = snprintf(graduationText, 1024, "%.*f", decimalsToShow, graduation);

关于c - sprintf 动态小数,内存违规,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49522820/

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