作者: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);
}