sprintf()乱码输出

时间:2012-09-25 12:55:12

标签: c++ printf

我有以下代码:

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位机器上正常工作。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

发表评论后:

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

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