我看到,随着我不断增加格式说明符" 10s"至" 100s" " 1000"我得到了继续在屏幕上移动的输出
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 . . .
发生了什么事?
答案 0 :(得分:2)
printf("%10s",s);
时的10s将离开弦前的前导空格。你的字符串有12个字符,如果你给10s,则sting的长度大于整数,所以没有空格。
如果整数值大于字符串,则它将离开空格。 在给出100s时,sting的长度小于整数,因此它留下了空白。
答案 1 :(得分:2)
在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.
只有控制字符串中的数字才会为您提供前导空格。
答案 2 :(得分:1)
语句printf("%ns",s);
打印字符串s
,但宽度为%nd
,表示我们希望为输出保留n
个字符(位置)。结果是在打印角色之前放置了n
个空格字符。