sprintf动态小数,内存违规

时间:2018-03-27 21:38:00

标签: c

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

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

然而,当程序运行时,我收到内存冲突错误。所以我想知道sprintf是否可以管理“%。* f”或者是否是我的错误。感谢

1 个答案:

答案 0 :(得分:1)

documentation for sprintf的内容如下:

  

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

     

sprintf() [et al。] ...写入字符串           str

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

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

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