- 对于
printf(%*.*s\n,m,m,ch);
,这种printf 函数的输出我第一次看的时候很奇怪。下面就来解释一下。 - 加入有下面的代码
#include<stdio.h>
int main()
{
char* ch = (char*)"123456789";
int m = 10,n = 2;
printf("%*.*s\n",m,n,ch);
printf("%*.*s\n",n,m,ch);
return 0;
}
- 我们可以看出来, * . * 这个组合中点 前面的 * 的意思是总的宽度,后面定义的是输出的个数。
- 如果后面的比前面的小,则使用空格在左侧补够 m 位。
- 如果前面的比后面的小,那么前面的将被忽略,所以我们一般只关注 点后面的 * 号。
- 经过在 VS2017 和 gcc 是相同的结果。