带有unsigned long long和sprintf的VisualC++ 6.0

Pet*_*hle 4 c visual-c++-6

我想在Visual C++ 6.0(普通C)中sprintf()一个unsigned long long值.

char buf[1000]; //bad coding 
unsigned __int64 l = 12345678; 
char t1[6] = "test1"; 
char t2[6] = "test2"; 
sprintf(buf, "%lli, %s, %s", l, t1, t2);
Run Code Online (Sandbox Code Playgroud)

给出结果

12345678, (null), test1
Run Code Online (Sandbox Code Playgroud)

(test2不打印的手表)

并且l = 123456789012345它提供了一个异常处理

有什么建议?

Chr*_*isN 9

unsigned __int64在Visual C++ 6.0中打印值,您应该使用%I64u,而不是%lli(请参阅MSDN 上的此页面).%lli仅在Visual Studio 2005及更高版本中受支持.所以,你的代码应该是:

sprintf(buf, "%I64u, %s, %s", l, t1, t2);
Run Code Online (Sandbox Code Playgroud)