scanf的一个问题(暂未解决)
如下代码,没有按照预想的那样运行:
int a;
char b; printf("input a integer\n");
scanf("%d", &a); printf("input a char\n");
//scanf("%1s",&b);
scanf("%c",&b); printf("%d,%c\n",a,b );
运行的结果如下,并没有机会输入char字符,输入int后,回车直接就显示了。

----------------------------------------------------------------------------
原因分析:
输入int数值后,回车,此时连同回车一起进入了缓冲区,而b获取字符变成了回车符。
解决方案:
重点是要忽略到回车。
(1)用函数fflush(stdin)清除全部剩余内容 ==>OK
(2)用"%1s"来限制 ==>OK
(3)用getchar()清除
(4)用格式串中空格或"%*c"来"吃掉"
方法一:
int a;
char b; printf("input a integer\n");
scanf("%d", &a); printf("input a char\n");
fflush(stdin);
scanf("%c",&b); printf("%d,%c\n",a,b );
方法二:
%1s 读长度为1的字符串,因此前面的空格,回车都会过滤掉。
int a;
char b; printf("input a integer\n");
scanf("%d", &a); printf("input a char\n");
scanf("%1s",&b);
printf("%d,%c\n",a,b );
运行结果:

但程序结束报错:

修改如下即可:
将b定义为字符数组(字符串)
int a;
char b[];
printf("input a integer\n");
scanf("%d", &a); printf("input a char\n");
scanf("%1s",&b); printf("%d,%c\n",a,b[]);
方法三、
scanf的一个问题(暂未解决)的更多相关文章
- openerp学习笔记 计算字段、关联字段(7.0中非计算字段、关联字段只读时无法修改保存的问题暂未解决)
计算字段.关联字段,对象修改时自动变更保存(当 store=True 时),当 store=False 时,默认不支持过滤和分组7.0中非计算字段.关联字段只读时无法修改保存的问题暂未解决 示例代码: ...
- Popwindow自定义动画(nexus5不支持暂未解决)
遇到一个问题,先记录一下 PopWindow自定义动画 import android.app.Activity; import android.graphics.drawable.BitmapDraw ...
- Python中暂未解决的问题
编写一个复杂的计算器,可以在通过GUI输出出来.参考代码http://www.cnblogs.com/BeginMan/p/3216093.html shelve模块中open()函数调用文件文件的路 ...
- 使用MinIO中暂未解决的问题
时间显示问题 web页面上创建桶的时间跟使用SDK获取的时间不一样,相差8个小时,但是mc命令行客户端获取的时间跟web上的一样
- 「HTML+CSS」--自定义加载动画【014】【疑问未解决】
前言 Hello!小伙伴! 首先非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出- 哈哈 自我介绍一下 昵称:海轰 标签:程序猿一只|C++选手|学生 简介:因C语言结识编程,随后转入计算机 ...
- 记录未解决的问题:docker中无法启动mysqld
首先在docker中安装mysql server的包: sudo yum install mysql sudo yum install mariadb-server mariadb /usr/libe ...
- Jfrog Artifactory jenkins 流水线使用docker的方式培训[暂未成功]
1. 创建jenkins的流水线 2. 创建artifactory的镜像仓库 3. 创建generic的仓库上传需要的 war包还有tar包. 4. 修改pipeline的 脚本 主要修改的地方. 修 ...
- l2-002 链表去重 (未解决)
L2-002. 链表去重 时间限制 300 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定一个带整数键值的单链表L,本题要求你编写程序,删除 ...
- C/C++编译和链接过程详解 (重定向表,导出符号表,未解决符号表)
详解link 有 些人写C/C++(以下假定为C++)程序,对unresolved external link或者duplicated external simbol的错误信息不知所措(因为这样的错 ...
随机推荐
- Study 4 —— 数据类型(1)
基本类型数字字符串布尔 数字 整数 int 在32位机器上,整数的位数为32位,取值范围为-2**31~2**30 在64位机器上,整数的位数为64位,取值范围为-2**63~2**62 ...
- Linux 命令详解(十)Shell脚本的数组详解
1.数组定义 [root@bastion-IDC ~]# a=( ) [root@bastion-IDC ~]# echo $a 一对括号表示是数组,数组元素用“空格”符号分割开. 2.数组读取与赋值 ...
- ettercap中间人攻击--参数介绍
攻击和嗅探 -M, --mitm ARP欺骗,参数 -M arp remote # 双向模式,同时欺骗通信双方,-M arp:remote. oneway #单向模式,只arp欺骗第一个 ...
- HDU4685 Prince and Princess【强连通】
题意: 有n个王子和m个公主,每个王子都会喜欢若干个公主,也就是王子只跟自己喜欢的公主结婚,公主就比较悲惨, 跟谁结婚都行.然后输出王子可能的结婚对象,必须保证王子与任意这些对象中的一个结婚,都不会影 ...
- Java垃圾回收机制复习
一.如何确定某个对象是“垃圾” 二.典型的垃圾收集算法 三.典型的垃圾收集器 JVM(HotSpot) 7种垃圾收集器的特点及使用场景 https://www.cnblogs.com/chengxuy ...
- python - class propert应用
propert应用 #方式一: # class Student(object): # def __init__(self,name,sc): # self.name = name # self.sc ...
- 在Mysql中查询两个时间段的差,可以是秒,天,星期,月份,年...
SELECT TIMESTAMPDIFF(SECOND, now(), "2016-11-11 00:00:00") 语法为:TIMESTAMPDIFF(unit,datetime ...
- 推荐系统之矩阵分解及C++实现
1.引言 矩阵分解(Matrix Factorization, MF)是传统推荐系统最为经典的算法,思想来源于数学中的奇异值分解(SVD), 但是与SVD 还是有些不同,形式就可以看出SVD将原始的评 ...
- 允许远程用户登录访问mysql的方法
需要手动增加可以远程访问数据库的用户. 方法一.本地登入mysql,更改 "mysql" 数据库里的 "user" 表里的 "host" 项 ...
- 【转】Python中的运算符
[转]Python中的运算符 说完常用的数据类型,再来说下运算符.运算符用于将各种类型的数据进行运算,让静态的数据跑起来. 编程语言中的运算大致分为以下几个大类: 算术运算, 用于加减乘除等数学运算 ...