首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

为什么sprintf会异常

2012-05-22 
为什么sprintf会错误?C/C++ codeint main(){char s[1024]int index 0char * name dbsdfdasf__int

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

热点排行