C语言 scanf(“%c“)与空白字符
目录
问题描述:
解决方案:
举个例子:
问题描述:
scanf("%c")从键盘读取数据时,将读取空白字符,并在读取空白字符后停止读取空白字符之后的内容,而为被读取的内容将会影响下一次scanf("%c")从键盘读取数据
解决方案:
针对这种情况可以在scanf("%c")中的%c前面加上空格字符,这样就可以消除空白字符之后的未读取内容对scanf()的影响
举个例子:
下述程序欲实现的功能是:输入两个字符,判断两个字符是否都是大写字母,如果都是则输出YES,否则输出NO
#include <stdio.h>int main()
{char ch1 = 0;char ch2 = 0;while (~scanf("%c%c", &ch1, &ch2)){if ((ch1 >= 'A' && ch1 <= 'Z') && (ch2 >= 'A' && ch2 <= 'Z'))printf("Y\n");elseprintf("N\n");}return 0;
}
程序运行,多次输入AB进行测试,发现程序未能达到预期目的,存在bug
按照上述解决方案调整后(仅仅在%c%c前添加了空格' ')
#include <stdio.h>int main()
{char ch1 = 0;char ch2 = 0;while (~scanf(" %c%c", &ch1, &ch2)){if ((ch1 >= 'A' && ch1 <= 'Z') && (ch2 >= 'A' && ch2 <= 'Z'))printf("Y\n");elseprintf("N\n");}return 0;
}
再次测试,问题得以解决
C语言 scanf(“%c“)与空白字符相关推荐
- C语言scanf函数奇遇记
C语言scanf函数奇遇记 作者:ocean 撰写日期:2011-11-20 博客链接:http://oceanspace.tk 看<The C Programming Language& ...
- C语言 scanf()和gets()函数的区别
C语言 scanf()和gets()函数的区别 1.相同点:scanf( )函数和gets( )函数都可用于输入字符串 2.不同点:两者在功能上有所区别,具体区别如下: 要实现如下需求"从控 ...
- c语言中数组部分输入赋值,c语言scanf对数组赋值
c语言动态数组赋值,,c语言结构体数组赋值,c语言scanf对数组赋值 c语言数组动态赋值,<手把手教你学51单片机-C语言>之六 中断与数码管动态显示,c语言结构体数组赋值,c语言sca ...
- c语言添加输入函数吗,C语言scanf()函数下支持中文输入吗?
C语言scanf()函数下支持中文输入吗? C语言scanf()函数下支持中文输入吗? 如果我编写一个程序,要求是先输入姓,再输入名,然后按照常姓名的方式排列出来,如果我需要输入中文该怎么办? 搜索更 ...
- c语言scanf返回值
c语言scanf返回值 1. scanf 函数是有返回值的,它的返回值可以分成三种情况 1) 正整数,表示正确输入参数的个数.例如执行 scanf("%d %d", & ...
- c语言scanf与gets区别,C语言 scanf()和gets()函数的区别
C语言 scanf()和gets()函数的区别 1.相同点:scanf( )函数和gets( )函数都可用于输入字符串 2.不同点:两者在功能上有所区别,具体区别如下: 要实现如下需求"从控 ...
- C语言 scanf三种不同的输入方式
关于C语言 scanf 的三种不同的输入方式 第一种:先输入要读取多少个数,从后面的数字中读取相应个数 代码示意如下 int n,x,flag;scanf("%d",&n) ...
- C语言scanf()函数的返回值
C语言scanf()函数的返回值 代码例子: #include<stdio.h> int main(){int num1=0,num2=0;int value= scanf("% ...
- C语言scanf连续输入两个字符
C语言scanf函数连续输入两个字符出现的问题 上代码 //初始代码,输入1,2,a,b,每次输入按了一次回车 int a,b; char c,d; scanf("%d%d",&a ...
最新文章
- Linux环境程序栈溢出原理
- JavaBean与表单处理
- DARPA宣布未来五年将投资20亿美元开发下一波人工智能技术
- 云服务器如何导入文件,如何将文件导入云服务器中
- Android应用安全与防范之签名校验
- Log4j、slf4j
- Python网络爬虫--Scrapy使用IP代理池
- 服务端端口状态和客户端端口状态解释-LISTENING-ESTABLISHED-TIME_WAIT
- spring MVC 使用 modelAndView.setViewName(forward:*.action) 发送重定向
- java系统源代码_JAVA学生管理系统源代码
- android动画特效,安卓——之Animation动画特效
- Java-Spark系列6-Spark SQL编程实战
- solidworks2021安装教程,solidworks2021安装步骤
- Linux SSH无密登录配置
- SAS硬盘-神级高性能硬件盘点
- Redis分布式锁----悲观锁实现,以秒杀系统为例 - 林炳文Evankaka的专栏 - CSDN博客
- android 传感器 频率,Android加速度传感器数值的过滤
- Tester的基本术,你精通几个?
- SpringBoot+MongoDB GridFS文件上传、下载、预览实战
- sip协议呼叫流程详解