| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> ?( ‘ω‘ )? 【超详细!!!C语言scanf问题】scanf吃掉回车或空格问题 -> 正文阅读 |
|
[C++知识库]?( ‘ω‘ )? 【超详细!!!C语言scanf问题】scanf吃掉回车或空格问题 |
一、什么是scanf语句?它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include <stdio.h> 读取方式: 一般格式为:scanf(格式控制,地址列表),也就是scanf("%?",&?); 可以读取对应类型的数值并且存储到指定的变量,并且可以读取多个数值,如数字,字符,字符串等?,每次用到scanf时,都会从数据缓存区读取一个或多个字符,并存入相对应的变量中。 【注意】
二、scanf()常见吃掉回车或空格问题我们经常在练习的时候会发现scanf把回车或者空格“吃掉了”,这导致我们的运行结果和预期的不同,大家看下面这个例子(例1):
在这里我们输入abcdef,结果如下: 但当输入的数值当中有空格时: ?从这里我们可以看到,遇到空格scanf就停止输入了,因为scanf已经读取了字符串"abc",之后遇到空格,就会结束一次输入,空格不会被接收,遇到空格就认为对arr的赋值结束了,后面的def被忽略,这里我们要注意的是:def会留存在键盘缓存区。 接下来看另外一个例子(例2):
结果如下: ?我们会发现:第一次输入没有问题,但是第二次输入就有问题了。 为什么呢? 因为:scanf单字符输入时规定只接收一个字符。在第一次输入的时候,scanf("%c %c");之间有一个空格,我们输入a的值之后,输入空格(此时空格被看做字符对待,空格会读取停止字符并释放掉),再输入b的值,第一次输入正常,这时scanf把第一次输入时的回车符也当做字符取对待了,当我们输入完b之后按回车,这个回车是放在缓冲区的;第二次调用scanf("%c%c",&c1,&c2);时,把还在缓冲区的回车当做字符赋值给c1,之后把a赋值给c2。所以第二次输入有问题了。 三、解决方法1、当scanf()函数在接收字符串时,遇到空格就会停止接收,我们可以使用gets()函数代替,或者使用一个参数,%[ ]。 %[ ]:这个参数的意义是读入一个字符集合。[ ]是个集合的标志,因此%[ ]特指读入此集合所限定的那些字符。比如%[A-Z]是输入大写字母,一旦遇到不在此集合的字符便停止。如果集合的第一个字符是“^”,这说明读取不在“^“后面集合的字符,即遇到”^“后面集合的字符便停止,此时读入的字符串是可以含有空格的。(\n 表示换行符) 则上面例1的正确代码为:
结果为: 2、当scanf()函数在接受多个单个字符时,只需要在输入的对应位置加好空格即可(把缓冲区里的内容赋值给相对位置)。 则上面例2的正确代码为:
结果为: ?【如有错误欢迎评论指正!】 |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 16:31:03- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |