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),是将缓冲区清空。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值