C语言——(printf和scanf介绍)

一.printf 

1.基本用法 

printf()的作用是将参数文本输出的屏幕。如下; 
C语言——(printf和scanf介绍)_第1张图片

2.占位符

printf()可以在输出文本中指定占位符 ,“占位符”,也就是这个位置可以用其他值代入。  

如:

C语言——(printf和scanf介绍)_第2张图片

那么图中的%d,就是占位符,18就是代入的值。占位符第一个字符都是%,第二个字符表示占位符的类型,图中%d为整型,所以输入是整数。不同的占位符,就要输入对应的值。 

printf()也可以使用多个占位符 

C语言——(printf和scanf介绍)_第3张图片

图中有2个占位符为%s,%d。那么这2个占位符就对应了后边的2个参数,%s为字符串,%d为整型,占位符与参数是一 一对应的。

3.占位符列举

• %a :⼗六进制浮点数,字⺟输出为⼩写。

• %A :⼗六进制浮点数,字⺟输出为⼤写。

• %c :字符。 • %d :⼗进制整数。

• %e :使⽤科学计数法的浮点数,指数部分的 e 为⼩写。

• %E :使⽤科学计数法的浮点数,指数部分的 E 为⼤写。

• %i :整数,基本等同于 %d 。

• %f :⼩数(包含 float 类型和 double 类型)。

• %g :6个有效数字的浮点数。整数部分⼀旦超过6位,就会⾃动转为科学计数法,指数部分的 e 为⼩写。

• %G :等同于 %g ,唯⼀的区别是指数部分的 E 为⼤写。

• %hd :⼗进制 short int 类型。

• %ho :⼋进制 short int 类型。

• %hx :⼗六进制 short int 类型。

• %hu :unsigned short int 类型。

• %ld :⼗进制 long int 类型。

• %lo :⼋进制 long int 类型。

• %lx :⼗六进制 long int 类型。

• %lu :unsigned long int 类型。

• %lld :⼗进制 long long int 类型。

• %llo :⼋进制 long long int 类型。

• %llx :⼗六进制 long long int 类型。

• %llu :unsigned long long int 类型。

• %Le :科学计数法表⽰的 long double 类型浮点数。

• %Lf :long double 类型浮点数。

• %n :已输出的字符串数量。该占位符本⾝不输出,只将值存储在指定变量之中。

• %o :⼋进制整数。

• %p :指针。

• %s :字符串。

• %u :⽆符号整数(unsigned int)。

• %x :⼗六进制整数。

• %zd : size_t 类型。

• %% :输出⼀个百分号。

4.输出格式

printf()可以定制占位符的输出格式 

1.限定宽度 

printf()限定宽度是最小宽度,如下 

C语言——(printf和scanf介绍)_第4张图片

图中限度最小宽度为%6d,所以宽度最小为6,那么123不满足,就会在值的前面添加空格补齐,输出的值默认是右对齐,那么如果想左对齐,只需要在%后面加入(-)负号,如%-6d 。  

C语言——(printf和scanf介绍)_第5张图片

如果参数超过了限定宽度是没有问题的,因为限定宽度是最小宽度,如下图

C语言——(printf和scanf介绍)_第6张图片

如下图,%12f表示输出的浮点数最少要占12位,那么精度默认小数点后为6位,剩余的就会在1的前边补齐。 

C语言——(printf和scanf介绍)_第7张图片

2.限定小数位

输出小数的时候,我们可以根据自己的想法来限定小数位。那么下图中我们想让它输出小数点后2位只需要在%后面加入小数点以及限定的位数即可。

C语言——(printf和scanf介绍)_第8张图片

那么会不会四舍五入呢,其实是会的如下图

C语言——(printf和scanf介绍)_第9张图片

3.限定宽度和限定小数的结合使用 

这2个是可以结合使用的如下图,最小宽度为10,小数点后限制3位,剩余的右边补齐

C语言——(printf和scanf介绍)_第10张图片

我们还可以更加灵活一点,最小宽度,限定小数都是可以用*号来代替的,通过printf()的参数传入,最小宽度为10,限定小数位3,同等与%10.3f 。如下: 

C语言——(printf和scanf介绍)_第11张图片

4.输出部分的字符 

在%号后面加入小数点以及限定的位数不仅可以用在浮点数,也可以用在字符串。如下,我们限定的位数为5位,所以输出为”zhang“ 。 

C语言——(printf和scanf介绍)_第12张图片

小结:大家可以自行灵活的去实践

二.scanf

那么我们有了printf()输出,当然也有scanf()输入了。

1.基本用法

用于读取用户的键盘输入 ,当程序运行到该语句,会停下来,等待用户在键盘的输入,用户输入完,按下回车键,scanf()就会处理用户的输入,并存入变量,定义的头文件为stdio.h  

scanf()与printf()一样都是有占位符的,如下图, %d 就是⼀个占位符, % 是占位符的标志, d 表⽰整数。第⼆个参数 &i 表示,将用户从键盘输⼊的整数存⼊变量 i ,变量前边必须加入&运算符,因为scanf()传递的是地址,将变量i的地址指向用户的输入的值。

例子,那么前边2个%d就表示用户输入的是整数,后边2个%f表示用户输入浮点数。在这里因为我使用的是vs2022,所以scanf( )要加入下划线s ,或者包含,#define_CRT_SECURE_NO_WARNINGS ,这样才不会报错。 

C语言——(printf和scanf介绍)_第13张图片

那么scanf()处理数值占位符,会自动过滤空白字符,包括空格、制表符、换行符等。

什么意思呢?如下。键盘等待着我输入,我可以输入一行然后回车再接着输入下一行。

C语言——(printf和scanf介绍)_第14张图片 

注意点下图:  

图中,读取是对应匹配的,如%d占位符,那么读取到整数18就结束了,然后%f占位符从小数点位开始读取就为0.3,然后小数点默认精度为6位,0.300000 , 所以输出18 0.300000。

C语言——(printf和scanf介绍)_第15张图片

2.scanf返回值

scanf返回值,返回的是一个整数,表示成功读取的数量个数 。

如图,成功读取了a,b,c。返回值为3 

C语言——(printf和scanf介绍)_第16张图片

如果没有读取任何的数,或者说读取失败就会返回0,在vs环境中按键Ctrl+z就是提前结束。 

C语言——(printf和scanf介绍)_第17张图片

如果在读取之前,发生了读取错误,会返回常量EOF(-1)

C语言——(printf和scanf介绍)_第18张图片

3.占位符列表

• %c :字符。

• %d :整数。

• %f : float 类型浮点数。

• %lf : double 类型浮点数。

• %Lf : long double 类型浮点数。

• %s :字符串。

• %[] :在⽅括号中指定⼀组匹配的字符(⽐如 %[0-9] ),遇到不在集合之中的字符,匹配将会 停⽌。

值得注意的是,除了%c以外,其他的占位符都会自动忽略起首的空白字符。如,%d可以忽略掉起首的空白字符

C语言——(printf和scanf介绍)_第19张图片

C语言——(printf和scanf介绍)_第20张图片

但是,如果是%c就不可以 ,因为在读取的时候空格也是字符。

C语言——(printf和scanf介绍)_第21张图片

如果要跳过空白字符,可以在%c前边加一个空格

C语言——(printf和scanf介绍)_第22张图片

 4.赋值忽略符

如我们输入日期

C语言——(printf和scanf介绍)_第23张图片

 但是,当我们不符合规定输入

C语言——(printf和scanf介绍)_第24张图片

scanf()解析数据会失败,为了避免这一情况,scanf()提供了赋值忽略符,为*,只要把*加在任何占位符%后边,该占位符就不会返回值,只对它进行解析然后丢弃,如%*c表示,读取后就丢弃,不用返回。

C语言——(printf和scanf介绍)_第25张图片

三.结尾

感谢大家的阅读! ! !

 

你可能感兴趣的:(c语言,开发语言)