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

发布于 2024-10-29 04:49:31 字数 369 浏览 1 评论 0原文

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

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
..


我怎样才能做到这一点?

I'm currently using the following code to print the elapsed time (in seconds) on the screen:

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

I would like to output the time as:

..
08
09
10
..

How can I do that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

提赋 2024-11-05 04:49:31

使用类似的内容:

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);

如果 i 至少有两个数字,则 pad 将是一个零长度字符串,因此 printf 不会输出字符。

Use something like:

printf("%02i", i);

This will always produce at least two digits, with leading zeros if necessary.

If you wanted to pad with a space instead of zero, you should use:

printf("%2i", i);

Would produce:

 1
 2
10

Not recommended:

If you wanted to do that without using the size specifier in the format string, you could do a trick like this:

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 would be a zero-length string if i has at least two digits, so printf would not output a character.

·深蓝 2024-11-05 04:49:31
for(int i = 1;  i < 20;  i++)
{
    system("CLS");
    printf("%02d", i);

    Sleep(1000);
}

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

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

    Sleep(1000);
}

... is probably closer to what you want.

扛刀软妹 2024-11-05 04:49:31

如果你想要连续的两位数,为什么不简单地像这样呢?

printf("%02d", i)

为值 >10 添加一个零字符,顺便说一句,听起来很可怕。 (也因为 %c 将打印 -something-,实际上是零,与 %s 不同,它不会在遇到第一个 \0 时停止)。

If you want contant double digits, why not simply like this?

printf("%02d", i)

adding in a zero character for values >10 sound scary btw. (also because %c will print -something-, indeed the zero, unlike %s it won't stop on the first \0 encountered).

赠意 2024-11-05 04:49:31

这将给出您想要的输出

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

,但如果您想打印出经过的时间,则不应该这样做。

This will give the output you want

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

But if you want to print out the time elapsed you should not do it this way.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文