如何使用printf打印空白字符?

时间:2011-04-01 10:06:44

标签: c++ char printf

我目前正在使用以下代码在屏幕上打印已用时间(以秒为单位):

for(int i = 1;  i < 20;  i++)
{
    char cheese[0];

    if(i < 10)
    {
        cheese[0] = '0';
    }
    else    cheese[0] = '\0';

    system("CLS");
    printf("%c%i", cheese[0], i);

    Sleep(1000);
}


我想把时间输出为:

..
08
09
10
..


我怎么能这样做?

4 个答案:

答案 0 :(得分:3)

使用类似:

printf("%02i", i);

这将始终产生至少两位数,必要时带前导零。

如果你想用空格填充而不是零,你应该使用:

printf("%2i", i);

会产生:

 1
 2
10

不推荐:

如果你想在不使用格式字符串中的大小说明符的情况下这样做,你可以这样做:

char pad[2];
pad[1] = 0; // make sure the pad string is terminated properly
if (i >= 10) {
 pad[0] = 0; // plain zero - end of string marker
} else {
 pad[0] = '0'; // character zero
}
printf("%s%i", pad, i);
如果pad至少有两位数,

i将为零长度字符串,因此printf不会输出字符。

答案 1 :(得分:3)

for(int i = 1;  i < 20;  i++)
{
    system("CLS");
    printf("%02d", i);

    Sleep(1000);
}

......可能更接近你想要的东西。

答案 2 :(得分:0)

如果你想要两位数,为什么不简单地喜欢这个?

  

printf(“%02d”,i)

为值添加零字符&gt; 10声音吓人顺便说一句。 (也因为%c会打印-something-,实际上是零,不像%s它不会在遇到的第一个\ 0上停止。)

答案 3 :(得分:0)

这将提供您想要的输出

for(int i = 1;  i < 20;  i++)
{        
    printf("%d2", i);    
    Sleep(1000);
}

但是如果你想要打印出已经过去的时间,你就不应该这样做。