为什么sprintf会错误?
- C/C++ code
int main(){ char s[1024]; int index = 0; char * name = "dbsdfdasf"; __int64 size = 2344602; __int64 time = 1337192170; int attr = 1; sprintf(s, "%d:%s:%x:%x:%d", index, name, size,time, attr ); printf("%s\n",s);}
输出结果 0:dbsdfdasf:23c69a:0:1337192170
[解决办法]
__int64 是64bit 整数类型,被VC支持,GCC中对应的变量类型为long long
在输出64bit数据的时候,格式符要加I64前缀。改为下面的语句,就可以正确运行了。
sprintf(s, "%d:%s:%I64x:%I64x:%d", index, name, size,time, attr );