为什么sprintf会错误?

cure7946358 2012-05-17 02:47:34

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
...全文
398 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
cure7946358 2012-05-21
  • 打赏
  • 举报
回复
非常感谢各位的回答。
qq120848369 2012-05-18
  • 打赏
  • 举报
回复
long long可移植,无论32位还是64位系统都是8字节。
wsxxiaohao 2012-05-18
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

Linux %lld
Windows %I64d最新好象%lld也支持。
[/Quote]
+++
赵4老师 2012-05-18
  • 打赏
  • 举报
回复
Linux %lld
Windows %I64d最新好象%lld也支持。
Linux_ming 2012-05-18
  • 打赏
  • 举报
回复
Linux 里面 64位
sprintf(s, "%d:%s:%ld:%ld:%d", index, name, size,time, attr );
printf("%s\n",s);
ForestDB 2012-05-17
  • 打赏
  • 举报
回复
Linux下学会man,Windows下学会MSDN。
hen_hao_ji 2012-05-17
  • 打赏
  • 举报
回复

sprintf(s, "%d:%s:%I64x:%I64x:%d", index, name, size,time, attr );
W170532934 2012-05-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

__int64 是64bit 整数类型,被VC支持,GCC中对应的变量类型为long long

在输出64bit数据的时候,格式符要加I64前缀。改为下面的语句,就可以正确运行了。
sprintf(s, "%d:%s:%I64x:%I64x:%d", index, name, size,time, attr );
[/Quote]
++
liangbch 2012-05-17
  • 打赏
  • 举报
回复
__int64 是64bit 整数类型,被VC支持,GCC中对应的变量类型为long long

在输出64bit数据的时候,格式符要加I64前缀。改为下面的语句,就可以正确运行了。
sprintf(s, "%d:%s:%I64x:%I64x:%d", index, name, size,time, attr );

69,372

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧