C语言中scanf函数输入回车符的问题

作者:gadflycq 时间:2009-04-12

   
    在用c语言编写输入语句的时候常用到scanf函数,初学者在刚用scanf函数输入时,经常会遇到各种各样的输入错误,最重要的是一定要记住scanf函数的输入格式,scanf函数里包含了哪些东西,输入的时候就必须有哪些东西,比如:scanf("%c%c%c"),那么输入的时候就必须连续输入3个字符,中间不能有任何空格逗号或者回车符等分开,而如果是scanf("%c,%c,%c"),那么输入3个字符的时候中间就必须用一个逗号分隔。

       scanf函数最常用的两种输入方式%d整数输入方式,以及%c字符输入方式。
       用%d方式输入整数时,输入一串数字然后按回车符,输入就完成了。而用%c方式输入字符时,就稍微复杂一点。一般来说用%c输入字符时,当输完以后,都习惯按一下回车,这时回车符就成了一个问题。

       【例1】:
       scanf("%c",&a); /*此时输入一个字符,并按下回车,那么变量a将会正确接收输入的字符*/
       scanf("%c",&b); /*但是变量b将会接收到回车符,其值为10,或者说ASCII码为10*/

       【例2】:
        scanf("%d",&x); /*此时输入一串数字并回车,变量x将正常接收到输入的整数*/
        scanf("%d",&y); /*变量y不会接收到回车符,需要用户继续输入数字,并回车,正常接收到整数*/

       【例3】:
        scanf("%d",&x); /*此时输入一串数字并回车,变量x将正常接收到输入的整数*/
        scanf("%c",&a); /*但是变量a将会接收到回车符,其值为10,或者说ASCII码为10*/

       【例4】:
        scanf("%d",&x); /*此时输入一串数字并回车,变量x将正常接收到输入的整数*/
        scanf("%d",&y); /*若此时输入的是字母而不是数字,比如输入“s”并回车*/
                        /*那么变量y将不会接收到任何字符或数字,其值保持原样,不发生任何改变*/
        scanf("%c",&a); /*此时变量a将接收到上一步输入的字母*/
                        /*即变量a中存储的字符将是"s",而不是回车符*/

       【结论】:
        当输入完整数或字符时,后面还需要输入字符时,为了避免输入的字符变成回车符,可以在输入字符前多加一条scanf语句来吃掉前面的回车符。此时用来吃掉回车符的scanf输入可以用%c方式,也可以用%d方式。当用%c方式来吃掉回车符时,回车符被读进了char类型变量中,当用%d方式来吃掉回车符时,回车符并没有被送进int类型变量中,而是在异常的字符输入后,被自动清除了。

 

 

C语言中scanf函数输入回车符的问题:https://blog.csdn.net/gadflycq/article/details/27135197

  • 19
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值