scanf和printf介绍

 

目录

 

printf

1.基本⽤法

2.占位符

3.占位符列举

4.输出格式

(1) 限定宽度、限定小数数位

(2)输出部分字符串

scanf

1.基本⽤法

2.scanf的返回值

3.占位符

4.赋值忽略符 


printf

1.基本⽤法

printf() 的作⽤是将参数⽂本输出到屏幕。它名字⾥⾯的 f 代表 format (格式化),表⽰可以 

定制输出⽂本的格式。printf() 是在标准库的头⽂件 stdio.h 定义的。使⽤这个函数之前,必须在源码⽂件头部引⼊这 个头⽂件。

为了让光标移到下⼀⾏的开头,可以在输出⽂本的结尾,添加⼀个换⾏符 \n 。

上面两个输出是一样的。

2.占位符

printf() 可以在输出⽂本中指定占位符。 所谓 “占位符”,就是这个位置可以⽤其他值代⼊。 

上⾯⽰例中, there are %d banana \n 是输出⽂本,⾥⾯的 %d 就是占位符,表⽰这个位置要 ⽤其他值来替换。占位符的第⼀个字符⼀律为百分号 % ,第⼆个字符表⽰占位符的类型, %d 表⽰这 ⾥代⼊的值必须是⼀个整数。

printf() 的第⼆个参数就是替换占位符的值,上⾯的例⼦是整数 3 替换 %d 。执⾏后的输出结果 

就是 There are 3 banana 。

注意:输出⽂本⾥⾯可以使⽤多个占位符。 

printf() 参数与占位符是⼀⼀对应关系,如果有 n 个占位符, printf() 的参数就应该有 n + 1 个。如果参数个数少于对应的占位符, printf() 可能会输出内存中的任意值。占位符列举占位符列举

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) 限定宽度、限定小数数位

看懂上面的图就差不多啦。

注意:最后一个%12f 表⽰输出的浮点数最少要占据12位。由于⼩数的默认显⽰精度是⼩数点后6位, 所以 123.45 输出结果的头部会添加2个空格。

printf("%*.*f\n", 6, 2, 0.5);   等同于       printf("%6.2f\n", 0.5);

(2)输出部分字符串

%s 占位符⽤来输出字符串,默认是全部输出。如果只想输出开头的部分,可以⽤ %.[m]s 指定输出的⻓度,其中 [m] 代表⼀个数字,表⽰所要输出的⻓度。

占位符 %.5s 表⽰只输出字符串“nihao woshizs”的前5个字符,即“nihao”。

scanf

当我们有了变量,我们需要给变量输⼊值就可以使⽤ scanf 函数,如果需要将变量的值输出在屏幕上 的时候可以使⽤ prinf 函数。

1.基本⽤法

scanf() 函数⽤于读取⽤⼾的键盘输⼊。

scanf() 的语法跟 printf() 类似。

scanf() 的第⼀个参数 %d ,表⽰⽤⼾输⼊的应该是⼀个整数。 %d 就是⼀个占位符, % 是占位符的标志, d 表⽰整数。第⼆个参数 &i 表⽰,将⽤⼾从键盘输⼊的整数存⼊变量。

注意:(1)键盘输⼊读⼊多个变量的例⼦。​​​​​​​  

scanf("%d%d%f%f", &i, &j, &x, &y);

(2)scanf() 处理数值占位符时,会⾃动过滤空⽩字符,包括空格、制表符、换⾏符等。 

%d 占位符会忽略起⾸的空格,从 - 处开始获取数据,读取到 -13 停下来,因为后⾯的 . 不属于整数的有效字符。这就是说,占位符 %d 会读到 -13 。 第⼆次调⽤ scanf() 时,就会从上⼀次停⽌解读的地⽅,继续往下读取。这⼀次读取的⾸字符 是 . ,由于对应的占位符是 %f ,会读取到 .45e12 ,这是采⽤科学计数法的浮点数格式。后⾯的 # 不属于浮点数的有效字符,所以会停在这⾥。

2.scanf的返回值

scanf() 的返回值是⼀个整数,表⽰成功读取的变量个数。 

如果没有读取任何项,或者匹配失败,则返回 0 。如果在成功读取任何数据之前,发⽣了读取错误或者遇到读取到⽂件结尾,则返回常量 EOF。 

在VS环境中按3次 ctrl+z ,才结束了输⼊。如果⼀个数字都没有输入过 ,直接按3次 ctrl+z ,输出的是-1,也就是EOF。

3.占位符

scanf() 常⽤的占位符与 printf() 的占位符基本⼀致。

除了 %c 以外,都会⾃动忽略起⾸的空⽩字符。 %c 不忽略空⽩字符,总是返回当前第⼀个字符,⽆论该字符是否为空格。 

如果要强制跳过字符前的空⽩字符,可以写成 scanf("    %c", &ch) ,即 %c 前加上⼀个空格,表 

⽰跳过零个或多个空⽩字符。 

特别说⼀下占位符 %s ,它其实不能简单地等同于字符串。它的规则是,从当前第⼀个⾮空⽩字符开始读起,直到遇到空⽩字符(即空格、换⾏符、制表符等)为⽌。 

4.赋值忽略符 

scanf() 提供了⼀个赋值忽略符 。 只要把 * 加在任何占位符的百分号后⾯,该占位符就不会返回值,解析后将被丢弃。

比如有人写年月日,有些人这样写2023-11-28,有些人这样写2023/11/28。

scanf("%d%*c%d%*c%d", &year, &month, &day);这样就可以避免这种情况。

QAQ

谢谢大家的点赞和关注

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

恋雨QAQ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值