关于sprintf函数不同环境下的执行结果

作者:iamlaosong

今天发现sprintf函数的一个问题,不同环境下同样语句执行结果是不一样的。一个时间字符串,要求是6位,不足6位时前面补0,用下面语句实现:

strcpy(tt,"2345");
printf("==%s==",tt);
sprintf(t1,"%06s",tt);
printf("==%s==",t1);


上述语句VC的执行结果:==2345====002345==

同样语句Linux下执行结果:==2345====  2345==

没有补0,补的是空格。要解决这个问题,补0的实现办法如下:

k=strlen(tt);
if (k < 6)
{
  strcpy(t1, "000000");
  strncpy(t1+6-k,tt,k);
  printf("==%s==",tt);
  strcpy(tt,t1);
  printf("==%s==",tt);
}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值