4

我有以下代码:

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

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

提前感谢您的帮助。

4

1 回答 1

2

在此评论之后:

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

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

于 2012-09-25T13:14:50.583 回答