前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于scanf的几种处理方法「建议收藏」

关于scanf的几种处理方法「建议收藏」

作者头像
全栈程序员站长
发布2022-07-10 10:47:14
6770
发布2022-07-10 10:47:14
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是全栈君。

字符输入中,赋值顺序和缓存的联系

scanf是从标准输入缓冲区中读取输入的数据,假设连续输入两个%c格式的字符。而中间又要涉及回车,那么第二个字符将被赋予回车。

解决的方法:

1、清空输入缓冲区

第一个scanf后增加语句:fflush(stdin); //C语言清空输入缓冲区函数

2、格式控制中增加空格

将第二个scanf改为:scanf(” %c”,&ch2);//在%号前面加一个空格

scanf格式输入时要求输入格式与格式控制符中的全然一样(如:scanf(“abcd%c”,&ch);输入时必须输入abcde,ch得到的值为e)空格能够抵消前面输入的回车符。

3、直接用ch=getche()吸收回车

4、当输入完整数或字符时。后面还须要输入字符时,为了避免输入的字符变成回车符,能够在输入字符前多加一条scanf语句来吃掉前面的回车符。

此时用来吃掉回车符的scanf输入能够用%c方式,也能够用%d方式。当用%c方式来吃掉回车符时,回车符被读进了char类型变量中,当用%d方式来吃掉回车符时,回车符并没有被送进int类型变量中。而是在异常的字符输入后,被自己主动清除了。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/115660.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年2月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档