如何使用 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
..
我怎样才能做到这一点?
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
使用类似的内容:
这将始终产生至少两位数字,如有必要,则带有前导零。
如果你想用空格而不是零填充,你应该使用:
会产生:
不推荐:
如果你想在格式字符串中不使用大小说明符的情况下做到这一点,你可以做一个技巧像这样:
如果
i
至少有两个数字,则pad
将是一个零长度字符串,因此 printf 不会输出字符。Use something like:
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:
Would produce:
Not recommended:
If you wanted to do that without using the size specifier in the format string, you could do a trick like this:
pad
would be a zero-length string ifi
has at least two digits, so printf would not output a character....可能更接近你想要的。
... is probably closer to what you want.
如果你想要连续的两位数,为什么不简单地像这样呢?
为值 >10 添加一个零字符,顺便说一句,听起来很可怕。 (也因为 %c 将打印 -something-,实际上是零,与 %s 不同,它不会在遇到第一个 \0 时停止)。
If you want contant double digits, why not simply like this?
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).
这将给出您想要的输出
,但如果您想打印出经过的时间,则不应该这样做。
This will give the output you want
But if you want to print out the time elapsed you should not do it this way.