sprintf() 乱码输出

sprintf() garbled output

本文关键字:输出 sprintf      更新时间:2023-10-16

我有以下代码:

char buf[255];
int ID = 0;
double val = 1.234;
sprintf(buf, "%d@%.3lf", ID, val);
printf("%s", buf);

printf()正确打印了ID值,但val值只是一些垃圾。你知道是什么原因导致这个问题吗?我在 Win9 32 位上使用 MSVC 7。更奇怪的是,上面的代码在 64 位机器上可以正常工作。

提前感谢您的帮助。

在此注释之后:

是的,还有一些额外的代码。这段代码被编译成一个DLL库,实际上我有三个地方可以调用我的问题中发布的代码,并且只有一个地方在输出垃圾中,如前所述。

这可能是由于代码中其他地方的某些问题造成的。您可能正在某处损坏堆栈/堆,并无意中覆盖了您的变量。使用内存检查器检查您的代码(valgrind(unix),CMemLeak(一切))