关于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);
}
 

你可能感兴趣的:(关于sprintf函数不同环境下的执行结果)