繁体   English   中英

试图了解printf中格式说明符的奇怪行为

[英]Trying to understand strange behavior of format specifier in printf

我看到随着将格式说明符“ 10s”的值不断增加到“ 100s”“ 1000s”,我得到的输出在屏幕上一直在移动

main()
{
char s[]="Hello,,world";
printf("%10s",s);
}

产量

10s

Hello,,worldPress any key to continue . . .

100s

      Hello,,worldPress any key to continue . . .

1000s

                        Hello,,worldPress any key to continue . . .

怎么了 ?

在使用printf("%10s",s); 10s将在字符串之前离开前导空格。 您的字符串有12个字符,如果给定10s,则字符串的长度大于整数,因此没有空格。

如果整数值大于字符串,则它将保留空白。 给出100时,字符串的长度小于整数,因此留有空白。

在printf中,以scpecifier格式给出值,就像在打印输出前给出前导空格。 将对数组值进行计数。

在第一种情况下

Total array count is 12. You gave 10. So there is no leading spaces.

在第二和第三种情况下,

You gave 100, SO 100-12=88 spaces and 1000-12=988 spaces is given as a  output. 

控制字符串中只有数字会给您前导空格。

语句printf("%ns",s); 打印字符串s ,但宽度为%nd ,表示我们要为输出保留n字符(位置)。 结果是在打印字符之前放置了n空格字符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM