printf 函数和scanf函数的比较

一、格式(以整形举例)

int a = 0;
printf(“%d\n”,a) (\n 是换行符,写不写由自己决定)
scanf(“%d”,&a) (当数组的类型为字符或字符串时,&不写)
注意:printf中有\n,scanf中有&

二、头文件

printf、scanf函数头文件都是 <stdio.h>

三、printf、scanf函数可以一次包含不同类型的数据

例如:printf(“%s有%d支笔\n”,“Lili”,2);
int a = 2;
int b =0.12;
scanf(“%d%f”,&a,&b);
注意:scanf输入时要保持格式一致。赋值忽略符,见

四、占位符

Part 1----printf和scanf中“%md”

printf:“%md”表示限定占位符的最小宽度为m(m为整数),此时打印的是整形,当打印字符串时,“%md”要改为“%ms”。当m>0时右对齐,当m<0时左对齐。例如:printf(“%5d\n”,4562)中“%5d”表示从右往左至少保留5个位置,打印结果为_4562; 而printf(“%-5s\n”,“abc”)打印结果为abc_ _
注意:a.“%md”表示限定占位符的最小宽度,当结果没有超过 |m| 位时,缺的位置用空格代替;当结果超过 |m| 位时,打印结果就是该数据本身。例如: printf(“%3d\n”,4562)打印结果为4562
b.浮点数默认小数点后六位,例如:printf(“%-5f\n”,4.562)打印结果为4.562000
scanf“%md”表示限定输入的最长长度。例如:char arr[12] ={0},scanf(“%ms”,arr)此时m最大为10,因为数组中还含有“\0”.

Part 2----printf中"%.md"和"%.ms"

printf:①"%.md"表示保留小数点后m位(m>0)同时遵循四舍五入原则。例如:printf(“%.2f\n”,4.567)打印结果是4.57
②但是要区分的是:"%.ms"表示输出开头m位字符串 例如:printf(“%.3s\n”,“hello”)打印结果是hel

Part 3----printf中“%md”和"%.md"连用

针对输出类型为数字时,“%md”和"%.md"连用 例如:printf(“%5.2f\n”,4.567)打印结果是_4.57

Part 4----scanf中"%c"和“%s”

①"%c":不会略空白字符,总是返回第一个字符
②“%s”:从当前第一个非零字符开始读取,直至遇到空白字符(如空格,换行符\n,制表符\t)停止,下一次读取时从上一次遗留的字符开始读取,仍然遵循遇到空白字符停止读取。
注意:a.一个scanf函数是不能完整的一次读完带有空白字符的字符串,为了一次读完可以多次使用scanf,或者使用gets函数
b.scanf要求读取时要格式一致,否则用赋值忽略符"%*c"。例如:图一前后输入格式不一致,而scanf(“%d,%d”, &a, &b)中加入逗号,我们在输入“4,5”时才会显示成功输入。图三中使用赋值忽略符"%*c",这时尽管我们输入“4,5”,但是“ ,”被忽略,打印结果不受影响。

输入格式不一致
图一

输入格式一致
图二

赋值忽略符图三

五、scanf返回值

①含义:成功读取变量的个数。如果没有读取任何项或者匹配失败,则返回0,如果成功读取数据之前,发生读取错误或者遇到读取文件结尾,则返回-1或者EOF
②用途:可以多次输入变量,例如:当scanf(“%d%d”, &a, &b) != EOF成立时,可以支持多行输入。

EOF

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值