c总结 使用scanf输入字符串问题

  学习c时经常遇到字符串的输入问题,使用scanf输入时总是会或多或少的遇到错误,总结一下我遇到过的情况

同时输入字符和字符串

  刚开始编写时可能大多数会这样写:

   (ch1为字符类型的数组,数组名即数组的首地址,所以不要&)

 当输入  字符  回车时会出现下面情况:

还没有输入字符串输入就结束了。当我们需要调用scanf输入的时候,输入的字符送到键盘缓冲区,然后scanf从中读取所规定的字符,例如 输入格式为%d,输入为777a2,实际上输入进去的时777,输入77 777,实际上输入进去的是77,因为空格和回车也会被scanf认为是字符。

 当我们输入c回车时,scanf从缓冲区把c提走赋予ch,但回车还在缓冲区并未提走,输入字符串时因为回车也是字符所以被赋予给ch1。

使用scanf输入可以这样做:

1.

结果是:

getchar() 是从控制台接收字符,注意只会接收一个字符,此时回车被getchar提走了

2.

结果是:

常用的是这两种方式,当然也可以直接使用gets()来输入字符串,它会把回车一起提走但不会把回车输入数组里,也可以使用fflush(stdin),是将缓冲区清空。

 

  • 17
    点赞
  • 0
    评论
  • 37
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值