我试图动态显示特定的小数位数。我用这个:
char graduationText[1024];
sprintf("%.*f", graduationText, decimalsToShow, graduation);
然而,当程序运行时,我收到内存冲突错误。所以我想知道sprintf是否可以管理“%。* f”或者是否是我的错误。感谢
答案 0 :(得分:1)
documentation for sprintf
的内容如下:
int sprintf(char *str, const char *format, ...);
sprintf()
[et al。] ...写入字符串str
由于sprintf
尝试读取未初始化的内存以用作格式字符串,并尝试写入字符串文字而导致未定义的行为。
但是,您应该更喜欢snprintf
到sprintf
来帮助您避免缓冲区溢出问题。
int r = snprintf(graduationText, 1024, "%.*f", decimalsToShow, graduation);