scanf(),getchar(),gets()区别与用法

这几个常见的输入函数时常困扰着初学编程的人,简单介绍一下区别与用法。

一、scanf();本人最常用,基本格式就是scanf(“%d,%c”,&a,&b);输入的数量可以继续扩充,能够将键盘输入以不同格式保存在变量里,功能强大。

注意点:

1、不要忘了加“&”,这个取地址符很重要,表明数据要放到这个地址去,有人经常丢;

2、scanf(),判断输入结束的标志是空格和回车,所以输入字符串时,若中间有空格,空格后面的字符输入不进去,因为scanf已经停止输入了;

3、不要在scanf()中加入一些杂七杂八的格式字符,比如scanf("a= %d",&a);"a="就是自己给自己找麻烦,输入者谁会知道你要求输入“a=”?

二、gets(),输入字符串的好帮手,当你的字符串中有空格时,就别想scanf了,gets(abc);就可以解决这个问题,abc是个字符数组,用来存字符串,键盘上的输入以回车为止;

注意点

1、gets()一次只能输入一个字符串,不像scanf()那样连续给好几个变量赋值;

2、主要用在字符串的输入上,其它类型不考虑

三、getchar(),得到一个字符,当你只想让用户输入一个字符时,可以考虑用它,它只接受一个字符,其余不要,比如让用户判断yes or no 时,你只想让用户输入Y 或者N时。

注意点

1、只接受一个字符

2、数据格式仅为字符,数字也会被当做字符。


再补充一点:

不管用哪个函数来进行键盘输入,一个好习惯就是及时清除键盘缓冲区,因为用户很可能不按照你给的的格式敲键盘,有些时候即使是最后的那一个“回车”也会在键盘缓冲区留下一个字符,影响后续的输入(之后使用scanf等函数时很可能先读入的是回车),为了消除最后一个回车的影响,一些方法是在scanf前多写一个getchar()去吸收这个回车,有些是写在scanf()后,这要根据不同程序自行设定,但有时还会存在一种情况,就是无论放在前还是放在后,getchar()总会不小心将正常的键盘输入“吃掉”一个字符(原本设计的是吃掉回车符),这一点也很好理解,因为它是一个输入函数,键盘缓冲区的字符是否多余完全需要你自己去判断。

另一个方法就是用fflush(stdin);这个语句就是清除键盘缓冲区数据,个人感觉,如果你的程序不需要跨到linux上去的话,只是交交作业练练手,最好用这个,放在scanf前面就好,这表示当你开始一次键盘输入时,键盘缓冲区是干干净净的,很省心。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值