目录

问题描述:

解决方案:

举个例子:


问题描述:

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“)与空白字符相关推荐

  1. C语言scanf函数奇遇记

    C语言scanf函数奇遇记 作者:ocean    撰写日期:2011-11-20 博客链接:http://oceanspace.tk 看<The C Programming Language& ...

  2. C语言 scanf()和gets()函数的区别

    C语言 scanf()和gets()函数的区别 1.相同点:scanf( )函数和gets( )函数都可用于输入字符串 2.不同点:两者在功能上有所区别,具体区别如下: 要实现如下需求"从控 ...

  3. c语言中数组部分输入赋值,c语言scanf对数组赋值

    c语言动态数组赋值,,c语言结构体数组赋值,c语言scanf对数组赋值 c语言数组动态赋值,<手把手教你学51单片机-C语言>之六 中断与数码管动态显示,c语言结构体数组赋值,c语言sca ...

  4. c语言添加输入函数吗,C语言scanf()函数下支持中文输入吗?

    C语言scanf()函数下支持中文输入吗? C语言scanf()函数下支持中文输入吗? 如果我编写一个程序,要求是先输入姓,再输入名,然后按照常姓名的方式排列出来,如果我需要输入中文该怎么办? 搜索更 ...

  5. c语言scanf返回值

    c语言scanf返回值 1. scanf 函数是有返回值的,它的返回值可以分成三种情况   1) 正整数,表示正确输入参数的个数.例如执行 scanf("%d %d", & ...

  6. c语言scanf与gets区别,C语言 scanf()和gets()函数的区别

    C语言 scanf()和gets()函数的区别 1.相同点:scanf( )函数和gets( )函数都可用于输入字符串 2.不同点:两者在功能上有所区别,具体区别如下: 要实现如下需求"从控 ...

  7. C语言 scanf三种不同的输入方式

    关于C语言 scanf 的三种不同的输入方式 第一种:先输入要读取多少个数,从后面的数字中读取相应个数 代码示意如下 int n,x,flag;scanf("%d",&n) ...

  8. C语言scanf()函数的返回值

    C语言scanf()函数的返回值 代码例子: #include<stdio.h> int main(){int num1=0,num2=0;int value= scanf("% ...

  9. C语言scanf连续输入两个字符

    C语言scanf函数连续输入两个字符出现的问题 上代码 //初始代码,输入1,2,a,b,每次输入按了一次回车 int a,b; char c,d; scanf("%d%d",&a ...

最新文章

  1. Linux环境程序栈溢出原理
  2. JavaBean与表单处理
  3. DARPA宣布未来五年将投资20亿美元开发下一波人工智能技术
  4. 云服务器如何导入文件,如何将文件导入云服务器中
  5. Android应用安全与防范之签名校验
  6. Log4j、slf4j
  7. Python网络爬虫--Scrapy使用IP代理池
  8. 服务端端口状态和客户端端口状态解释-LISTENING-ESTABLISHED-TIME_WAIT
  9. spring MVC 使用 modelAndView.setViewName(forward:*.action) 发送重定向
  10. java系统源代码_JAVA学生管理系统源代码
  11. android动画特效,安卓——之Animation动画特效
  12. Java-Spark系列6-Spark SQL编程实战
  13. solidworks2021安装教程,solidworks2021安装步骤
  14. Linux SSH无密登录配置
  15. SAS硬盘-神级高性能硬件盘点
  16. Redis分布式锁----悲观锁实现,以秒杀系统为例 - 林炳文Evankaka的专栏 - CSDN博客
  17. android 传感器 频率,Android加速度传感器数值的过滤
  18. Tester的基本术,你精通几个?
  19. SpringBoot+MongoDB GridFS文件上传、下载、预览实战
  20. sip协议呼叫流程详解

热门文章

  1. 计算机网络:期中考试2020年
  2. windows 无法安装ft232r usb uart 的解决办法
  3. openfalcon 组件监控_我对开源版本openfalcon的变更
  4. 有什么牌子台灯性价比高?性价比最高的护眼台灯
  5. 飞行机器人专栏(八)-- AGX Xavier 通信、控制及视觉应用开发
  6. cd命令 切换到D盘,切换到E盘
  7. ZYNQ - 嵌入式Linux开发 -07- petalinux工程配置解析
  8. 揭秘!为什么在外面修电脑这么坑?
  9. stm32实现串口打印输出
  10. 8266芯片控制灯开关代码