printf() 的作⽤是将参数⽂本输出到屏幕。它名字⾥⾯的 f 代表 format (格式化),表⽰可以定制输出⽂本的格式。
所谓占位符,就是该位置被其它值代入。
printf() 参数与占位符是⼀⼀对应关系,如果有 n 个占位符, printf() 的参数就应该有 n + 1 个。如果参数个数少于对应的占位符, printf() 可能会输出内存中的任意值。
// 参数 1 2 3 4
printf("%d %d %d", a, b, c);
//占位符 1 2 3
C语言中有哪些占位符呢?
常用的如下:
printf() 允许限定占位符的最⼩宽度。
#include
int main()
{
printf("%5d\n", 123); // 输出为 " 123"
return 0;
}
上⾯示例中, %5d 表⽰这个占位符的宽度⾄少为5位。如果不满5位,对应的值的前面会添加空格。输出的值默认是右对⻬,即输出内容前⾯会有空格。
#include
int main()
{
printf("%-5d\n", 123); // 输出为 "123 "
return 0;
}
默认情况下, printf() 不对正数显示 + 号,只对负数显示-号。如果想让正数也输出 + 号,可以在占位符的 % 后⾯加⼀个 + 。
printf("%+d\n", 12); //+12
printf("%+d\n", -12); //-12
输出小数时,想控制小数的位数可以使用 %.nf,其中n代表小数点后的位数。并且小数部分会进行四舍五入
printf("%.4f", 3.14159); //3,1416
这个可以与限定宽度结合使用%m.nf,即总宽度为m,小数点后有n位。
如下:
printf("%12.4f", 3.14159); //“ 3.1416”
%s 占位符⽤来输出字符串,默认是全部输出。如果只想输出开头的部分,可以⽤ %.ms 指定输出的⻓度,其中 m 代表⼀个数字,表⽰所要输出的⻓度。
scanf() 函数⽤于读取用户的键盘输⼊。
scanf("%d%d%f%f", &i, &j, &x, &y);
scanf() 处理数值占位符时,会⾃动过滤空⽩字符,包括空格、制表符、换⾏符等。
scanf() 处理⽤⼾输⼊的原理是:⽤⼾的输⼊先放⼊缓存,等到按下回⻋键后,按照占位符对缓存进⾏解读。解读⽤⼾输⼊时,会从上⼀次解读遗留的第⼀个字符开始,直到读完缓存,或者遇到第⼀个不符合条件的字符为⽌,如下:
scanf() 的返回值是⼀个整数,表⽰成功读取的变量个数。
scanf()与 printf() 的占位符基本⼀致,其中有几个较为特别的,如下:
有时候,用户输入的数据可能不符合预定的格式,scanf()的解析就会失败,
为了避免这种情况,scanf()提供了一个赋值忽略符*。
本次的分享就到这里啦,