读书人

为什么sprintf会异常

发布时间: 2012-05-22 18:18:54 作者: rapoo

为什么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 );

读书人网 >C语言

热点推荐