scanf输入字符和数字的问题
来源:互联网 发布:hex editor怎么修改mac 编辑:程序博客网 时间:2024/05/29 04:01
scanf是c语言中的常用函数,使用前导入stdio.h
这里讲一些经常遇到的问题。
首先要明白scanf的本质。当我们需要调用scanf输入的时候,输入的字符送到键盘缓冲区,然后scanf从中读取所规定的字符,比如我们scanf中要求的是%d,即数字型,那么属于数字的内容将被读取,当遇到不属于数字的内容时,扫描终止,比如我们输入的是5s5555,那么只有第一个5能接收,如果输入8 555,那么也只有第一个8能收到。但是没有收到的部分并不是被抛弃,而是继续保留在缓冲区中,当需要下一次scanf时,从缓冲区读数据。
1,字符串注意事项。
字符串需要注意的是,空格和回车也会被scanf认为是字符,所以,举个例子
#include <stdio.h>
int main(){
int a;
char b;
scanf("%d",&a);
scanf("%d",&b);
}
输入 8 回车
会发现程序即终止,原因是因为,当我们输入8然后回车时,回车符任然留在缓冲区,然后被scanf扫描给b。
还要注意的是scanf在接受字符串时候遇到空格也会终止,解决办法是限定扫描集合
scanf("%[^\n]s",str);或者是用gets函数
解决办法是getchar();或者是fflush(stdin);后者是将缓冲区清空;
2,数字
数字,可以容纳大小长度,如%4d,那么他限制四个位,如果不足没有关系,比如输入8s8888,那么只有第一个8,如果输入的位数超过那么只有前面四个
如88889999,只有8888;
阅读全文
0 0
- scanf输入字符和数字的问题
- scanf()输入数字和字符
- c语言中scanf输入带空格的字符串以及scanf输入单个字符的问题
- 使用scanf字符输入时遇到的问题
- 关于scanf对输入非法字符的检查和处理
- c之关于输入 scanf 和其他输入的问题
- c之关于输入 scanf 和其他输入的问题
- Scanf函数的输入问题
- scanf的安全输入问题
- scanf的输入字符时的陷阱
- c语言scanf()停止接受输入及scanf("%c",&c)吃掉回车或者空格字符的问题
- 混合输入数字和字符
- C语言中用scanf连续输入两个字符类型的问题
- 避免scanf函数输入单个字符时与回车冲突的问题
- 输入一行字符,统计其中英文字符、数字字符、空格和其他字符的个数
- scanf在输入整型数据和字符型数据时的不同
- 输入字符的分类和Byte类型数字的比较
- 一个字符变量存储到动态分配内存引发的输入问题解决--连续输入scanf函数存在缓冲区的问题
- 短实习--Oracle(基础知识)
- Qt里面登录对话框Dialog的show()和exec()
- 技术分析之Hibernate的关联关系映射之多对多映射
- 二叉树的镜像
- Codeforces Round #435 (Div. 2)-Mahmoud and Ehab and the xor(异或)
- scanf输入字符和数字的问题
- 频道管理配置
- 二叉树的先序、中序、后序和中序遍历——Java实现
- 数据结构第三周项目二
- uboot-Makefile分析
- Python 继承
- Eclipse+CDT编写C程序,eclipse新建项目添加到编译选项及其配置
- bzoj4552 [ TJOI2016 && HEOI2016 ] -- 二分+线段树
- 线程池之饱和策略