【问题标题】:How can I print a blank char using printf?如何使用 printf 打印空白字符?
【发布时间】:2011-07-27 13:56:51
【问题描述】:

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

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


我该怎么做?

【问题讨论】:

  • 我不确定你的问题是什么。你的意思是换行符吗?你能澄清一下吗?
  • 空白字符?你是说空间?
  • @Thomas:我在某处读到 \0 用于 NULL 字符。我试图做的是如果数字低于 10,则在数字前添加一个零,如果它是 10 或更高,则添加一个空白字符(不是空格!)。我该怎么做?
  • @Thomas:好的,谢谢!但是当我使用它时,它会输出一个空格。但我不想输出任何东西..
  • @Datoxalas:正如其他人所说,在 printf 中使用格式。

标签: c++ char printf


【解决方案1】:

使用类似的东西:

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 不会输出字符。

【讨论】:

  • 另外,您希望 cheese 为 1 个字符,因此将其定义为 char cheese; 或 char cheese[1];。现在它的长度为零。
  • 非常感谢,您已经回答了我的两个问题!
【解决方案2】:
for(int i = 1;  i < 20;  i++)
{
    system("CLS");
    printf("%02d", i);

    Sleep(1000);
}

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

【讨论】:

  • @Datoxalas 我认为你不明白这是做什么的。 printf 中的 02 表示应该至少打印 2 个字符,如果不够,其余的应该用 0 填充,这就是你想要的。
  • @quasiverse @Mat:我明白了..但我也想知道为什么我不能输出一个空白字符!
  • @Datoxalas 一个空白字符是一个空格,即' '。
  • @quasiverse: 所以我不能输出像javascript这样的东西?喜欢if(..){ var i = 'T'; }else var i = ''; document.write('there might be a var here' + i);
  • @Datoxalas 现在你让我很困惑。要输出空格,请执行' '。我相信你可以不输出任何内容 '\0' 这是一个空字符。
【解决方案3】:

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

printf("%02d", i)

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

【讨论】:

    【解决方案4】:

    这将给出你想要的输出

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

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

    【讨论】:

    • 您的 printf 语法错误。 d 和 2 是倒置的,没有 0,这不会补零。 (它将用空格填充)。
    • @Datoxalas:睡眠并不能保证你睡一秒钟,它只会给你不少于 1 秒的时间。所以你应该做什么取决于你使用的框架或库。
    猜你喜欢
    • 2011-01-09
    • 1970-01-01
    • 1970-01-01
    • 2016-11-14
    • 1970-01-01
    • 2016-02-11
    • 1970-01-01
    • 1970-01-01
    • 2018-06-04
    相关资源
    最近更新 更多