C语言第4弹-printf函数、scanf函数介绍

printf函数

printf():输出参数文本到电脑屏幕上。f代表format(格式化),表示可以定制输出文本格式。

printf()结尾不会自己附带换行操作,如果自己需要换行可以在结尾添换行符\n加,如果参数文本内部需要换行也可以在需要换行的地方添加\n.

#include <stdio.h>//使用printf()需要添加该头文件

int main()
{
printf("hello world");
printf("hello world\n");//打印结果会在hello world 的基础下一行出现一个空行,光标显示在空行开头。
printf("hello\n world");//hello world 会在不同行打印出来
return 0;
}

占位符:该位置可以由其它数值代入

#include <stdio.h>
int main()
{
printf("%d",3);//此时%d就是占位符 该位置会由3代替故 打印结果为3
return 0;
}

占位符第一个字符一律为% 第二个为占位符类型。使用%的,那么待入值就必须为整数。

printf()参数与占位符是一一对应的关系,如果有n个占位符,那么就会有n+1个参数。如果参数个数小于占位符个数,那么缺少的占位符就会打印随机值。

限定宽度:打印值最少得个数。

1.数值个数小于限定宽度,左边加空格,因为输出值是默认右对齐,如果想要左对齐,那么在限定宽度前加入-号即可。

#include <stdio.h>
int main()
{
printf("%5d",2334525);//那么该数字打印出来就是2334525,因为它个数大于5那么就全部打印
printf("%5d",314);l//如果该值个数小于5就在左边加空格,所以打印结果为  314
return 0;
}

限定小数位数:所有数字的最小宽度(包括.)

如果需要限制小数位则是使用%.浮点数类型这种方法。

#include <stdio.h> 
int main()
{
printf("%12f",3.14)//浮点数小数点后有6位 要求最小宽度为12 则需要在3前面加入4个空格,故输出值为    3.140000
printf("%.5f",3.14);//那么小数点后位数只能为5位,那么输出值为3.14000

return 0;
}

输出部分字符串

如果不想全部输出字符串内容,则可以使用%.ms的方法输出部分字符串。m表示个数

#include <stdio,h>

int main()
{
printf("%.5s","hello world");//则此时输出值为hello
return 0;
}

scanf函数

scanf():用于读取⽤⼾的键盘输⼊。scanf()语法与printf()函数相似,需要引头文件#include <stdio.h>。参数与占位符是一一对应的关系。

注:使用scanf()函数时,必须在变量前加上&(指针变量除外),因为scanf()传递的是不是值,而是地址。

scanf()函数处理数值占位符时,会自动过滤空白字符,包括空格制表符、换行符等。那么就说明,当你在输入的数据中间加入一个或多个空格,不会影响scanf()读取数据,换行如上。

scanf的返回值

scanf()返回值是一个整数,整数表示成功读取数据变量个数。如果未读取到任何项或失败则会返回EOF。

如果想要scanf()停止读取数据的话可以输入Z停止,VS是需要按3次Z停止。

占位符

scanf()函数占位符基本上与printf()函数相似,值得注意的是,%c不会忽略起首的空格。如果想要强制跳过字符的话,需要写为scanf(" %c",&ch)。%s不会读取空格,所以无法读取多个单词,除非多个%s一起使用。(后面会学到gets()可以解决包含空格问题)

scanf()函数将字符串读入数组,不会检测长度,所以储存的时候要注意不要超过数组个数,不然可能造成越界,产生未知影响。可以指定读取字符串个数(使用%ms)

赋值忽略符

当你需要输入固定格式时,如果你输入错误的话就可能导致获取数据失败,这时就可以用到赋值忽略符*,就不会造成如果你不小心输入错误导致无法读取的情况。

#include <stdio.h>

int main()
{
int year=0;
int month=0;
int day=0;
scanf("%d-%d-%d",&year,&month,&day);

使用赋值忽略符
int year=0;
int month=0;
int day=0;
scanf("%d%*c%d%*c%d",&year,&month,&day);
return 0;
}
上⾯⽰例中,如果⽤⼾输⼊ 2020-01-01 ,就会正确解读出年、⽉、⽇。问题是⽤⼾可能输⼊其他格式,⽐如 2020/01/01 ,这种情况下, scanf() 解析数据就会失败。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值