输入字符型变量时,scanf语句被忽略!!!!


while循环里不能输入两次(用两个scanf)嘛?

字符char换成整型int 型就可以

感觉就这一句代码的前后有问题

解决方法:
在scanf前加上getchar()语句;

详解出现问题原因: 当你输入数据后回车,数据才被函数“scanf()”读入,问题就出在这个“回车”上;
在C里面回车键是当两个字符来用的: 即“回车(发送)”和“换行”;
这样一来,问题就来了;
当你紧接着在“scanf()”后面再来一句“scanf()”读入一个字符的时候,此时在第二个“scanf()”里面读入的不是你输入的那个字符~
而是那个使人忽略的 “回车”字符;当然,要是你第二句“scanf()”不是输入字符而是输入数据的话,那就没有此问题出现。
解决的办法是在第二个“scanf()”语句前加一句getchar(); 此处的getchar();就是用来吞噬掉前面的“回车”。

样例代码:

#include<stdio.h>
#include <stdlib.h> //定义杂项函数及内存分配函数
#include <string.h> //字符串处理int sumT(int sum) {/*递归算法:将原问题分解为规模最小的子问题,然后递归调用相同方法,达到某个临界点,返回该值,来表示问题的解*/if (sum < 0)return 0;else if (sum == 0)//一阶有一种走法return 1;if (sum > 0)return sumT(sum - 1)+ sumT(sum - 2);/*分别算出用一步一阶,一步两阶的走法,相加后得出所有的走法*/
}main()
{int N;char b;while (1){printf("请输入楼梯台阶总数(1 < N < 50),N=");scanf_s("%d",&N,2);if (N > 1 && N < 50) {printf("当楼梯台阶总数N= %d 时,爬楼方式有%d种\n", N, sumT(N));printf("\n");}else{printf("请重新输入正确的楼梯台阶总数!!!\n");printf("\n");continue;}printf("是否继续?(继续请按y或其它,退出请按n)\n");getchar();/*直接使用scanf会忽略该语句,从而出错,具体原因如下:    当你输入数据后 回车,数据才被函数“scanf()”读入,问题就出在这个“回车”上;在C里面 回车 键是当两个字符来用的:即“回车(发送)”和“换行”;这样一来,问题就来了;当你紧接着在“scanf()”后面再来一句“scanf()”读入一个字符的时候,此时在第二个“scanf()”里面读入的不是你输入的那个字符~ 而是那个使人忽略的 “回车”字符;当然,要是你第二句“scanf()”不是输入字符而是输入数据的话, 那就没有此问题出现。解决的办法是在第二个“scanf()”语句前加一句getchar();此处的getchar();就是用来吞噬掉前面的“回车”。*/scanf_s("%c", &b,4);if (b == 'n')break;else if (b == 'y')continue;else continue;}return 0;
}

运行截图:

VS里SCANF_S不能输入字符型问题(输入字符型变量时,scanf语句被忽略!!!!)相关推荐

  1. 【C++】第二章 数据类型:整型/sizeof关键字/实型(浮点型)/ 字符型/转义字符/字符串型 /布尔类型/数据的输入

    C++规定在创建一个变量或者常量时,必须要指定出相应的数据类型,否则无法给变量分配内存! 目录 1 整型 2 sizeof关键字 3 实型(浮点型) 4 字符型 5 转义字符 6 字符串型 7 布尔类 ...

  2. c语言interger转char,怎样用c将无符号整型转化为字符型

    公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:怎样用c将无符号整型转化为字符型回答:可以通过函数itoa来转换,int i;char tmpstr[5];itoa(i, tmps ...

  3. c语言怎么把字符型数字变成整型数字,怎么把数字变成字符型

    1. C语言中如何将数字变成字符串啊 C语言提供了几个标准库函数,可以将任意类型(整型.长整型.浮点型等)的数字转换为字符串.用itoa()函数将整数转换为字符串,编码如下: # include # ...

  4. c语言输入12行怎么输入,c语言中,定义什么型别的变数能同时储存数字跟字元,怎么输入...

    c语言中,定义什么型别的变数能同时储存数字跟字元,怎么输入以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! c语言中,定义 ...

  5. C语言编程>第二十二周 ④ 从键盘输入一组小写字母,保存在字符数组str中,请补充fun函数,该函数的功能是:把字符数组str中字符下标为偶数的小写字母转换成对应的大写字母,结果仍保存在原数组

    例题:从键盘输入一组小写字母,保存在字符数组str中,请补充fun函数,该函数的功能是:把字符数组str中字符下标为偶数的小写字母转换成对应的大写字母,结果仍保存在原数组中. 例如,输入 " ...

  6. java数值型转字符型_Java中数值型,字符型及字符串的相互转换

    Java中数值型,字符型及字符串的相互转换由广州疯狂软件教育java培训分享: 刚开始学习Java不就前些时日被转换问题搞得有点凌乱在这里整理一下. 1.字符型与数值型之间的转换 (1)要将一个整数转 ...

  7. Stata字符型数据转为数值型数据

    本文用于记录数据处理过程中出现的问题 目录 一.所用命令 二.实例 1. 使用encode 2. 使用destring 三.可能存在的问题 1. 存在无法转成数值型的数据 2. 取对数时出错 四.参考 ...

  8. Matlab子程序: 判断输入类型,将输入转换成数字型输出

    背景:编程过程中,经常需要将输入转换成数字型,转换前必须对输入进行判断.输入可能为空,字符型,数字型,字符型有肯能无法转换成数字.针对以上情况,编制一个子程序进行判断,输出结果. 1.子程序 inpu ...

  9. c语言短整型变量字符,C语言入门 — 整型 char,short,int,long

    一.c 语言变量,有整型变量,浮点型变量,字符变量,布尔型变量. 1.整型变量位数,以下基于32位的操作系统: (1个字节等于8bits)点击查看二进制 长整型(long),短整形(short),整型 ...

最新文章

  1. [C++] stack和queue的常用函数
  2. java集合类——Stack栈类与Queue队列
  3. 中国电信计划构建安全新平台
  4. 每天一道LeetCode-----生成由[1 : n]这n个数组成的所有二叉搜索树
  5. linux终端提示符含义,Linux:终端提示符 (prompt) 不如期生效原因
  6. union共用体(联合体)、宏定义、枚举
  7. Python提示错误 module 'request' has no attribute 'urlretrieve'
  8. 面试题1,值传递和参数传递
  9. ICCV 2021 best paper-Swin Transformer:对各类SOTA的降维打击!
  10. 让木桶没有短板,FISCO BCOS全面推进并行化改造
  11. 灵格斯怎么屏幕取词_灵格斯词霸怎么用?灵格斯词霸使用手册
  12. C: 编译错误:fatal error: gnu/stubs-32.h: No such file or directory;bad register name `%rsp‘
  13. 36岁大龄程序员转岗做运营,最让我觉得有价值感的二三事!深度自问
  14. Windows10系统 ADMUI3无法删除
  15. CSDN写作小技巧—— Markdown 语法排版
  16. OCO-2卫星数据批量化下载教程
  17. OpenCV4学习笔记(57)——基于GrabCut图像分割算法实现背景替换与背景虚化效果
  18. 震惊,用过微粒贷的人没资格贷款买房!
  19. 1080i/p-HDTV
  20. Android手机主流屏幕分辨率有哪些?

热门文章

  1. 基于java swing的系统_Java实验--基于Swing的简单的歌曲信息管理系统(三)
  2. A - Mio visits ACGN Exhibition(dp)
  3. java中String类型转Map类型
  4. 干货 | 携程酒店iOS动态View的探索
  5. 请将文件MP_verify_xxxxxx.txt上传至填写域名或路径指向的web服务器(或虚拟主机)的目录 已解决
  6. 还在使用AtomicLong?
  7. 用深度学习技术,让你的眼睛可以控制电脑
  8. opencv实战---物体尺寸测量
  9. Fiddler抓包远程调试篇
  10. 微信公众号启用了服务器配置如何自定义菜单?