【C/C++】scanf()、gets()、getchar()、getline()、cin.getine()、cin.get()处理输入流的区别

28 篇文章 12 订阅
订阅专栏

一、具体功能及区别

1、scanf()

scanf()函数用来接收多种格式的数据,不可以接收空格,遇到回车默认输入结束(不能处理回车符,将其看作再次输入的字符)。

//不可接收空格
//在控制台中输入“Hello World”时,char_array的值是Hello
char array[20] = {0};
scanf("%s", array);

//遇到回车默认输入结束,且将回车作为下一次输入的字符
//在控制台中输入数字“5”然后按下回车键,此时ret_int的值是5,而ret_char的值是0x0a,即回车的ASCII码值
int ret_int;
char ret_char;
scanf("%d", &ret_int);
Scanf("%c", &ret_char);

2、gets()

gets()函数用来接收输入的字符串,其只会读一行,可以接收空格,遇到回车符默认输入结束(不能处理回车符,但会自动舍弃回车)。

//可接收空格
//在控制台中输入“Hello World”时,array的值是Hello World
char array[20] = {0};
gets(array);

3、getchar()

getchar()函数读入一个字符,并返回这个字符;回车也算一个字符,可以读取。如果读到文件结尾则返回EOF。

char c=getchar();

4、getline()

getline()函数一次读取多个字符(包括空格),遇到回车停止读入,并会屏蔽回车键(即不作为下一次的输入)

//遇到回车结束读入,且屏蔽回车键
//在控制台中输入数字“5”然后回车,此时str的值是5且屏蔽了回车键,即再次接收控制台输入时,之前的回车键已经接收不到了
string str;
getline(cin, str);

5、cin.getline()

cin.getline()属于istream流,而getline()属于string流,但用法几乎相同。一次读取多个字符(包括空格),读取后会直接丢弃回车/换行符,下一次不会读取换行。

其可以以指定地址作为存放第一个读取的字符的位置,依次向后存放读取的字符,直到读满N-1个,或者遇到指定的结束符为止。若不指定结束符,则默认结束符为’\n’。声明为

cin.getline(字符指针(char*), 字符个数N(int), 结束符(char));

cin.getline(str, 5, 'a'); //第三个参数默认为”\0”
cin.getline(str, 5);
cin.getline(str);

6、cin.get()

cin.get()读取后,回车仍然会留在输入流中

cin.get(str, 20);
cin.get(str);

二、总结 

get和getline函数差别
Roman的博客
05-27 786
//get(char*array,int count,char delim)与getline(char*array,int count,char delim)的不同点: //1.当输入的字符数小于count时遇到字符delim,get函数不会读取delim这个字符,而getline函数将读取这个字符但是不存进array当中去,而是将其丢弃,当然,两者都会在读取的字符串后面自动加上'\0'(t
C++最全输入方式总结(cin、get、getchargetline)
热门推荐
qq_41687938的博客
05-28 2万+
1.cin>> 1)最常见的是获取输入的一个字符或数字,如 int a,b; cin>>a>>b; 注意:cin>>会自动过滤掉不可见字符(如空格 回车 tab等)。若不想过滤掉空白字符,可以用noskipws进行控制。 ...
scanf()和gets()输入字符串的区别C++中几个输入函数的用法和区别(cincin.get()、cin.getline()、getline()、gets()、getchar()))
07-21 1100
相同点:字符串接受结束后自动加’\0’ 不同点:scanf用%d输入数字或用%s输入字符串时,在开始读之前会跳过空格、回车或制表符等空白字符,再次遇到这些字符时,系统认为读入结束,因此不能输入带空格的字符串。未读取到的被留在了输入缓冲区中。 gets()以回车符作为字符串的终止符,同时将回车符从缓冲区读走,但不作为字符串的一部分。而scanf()不读走回车符,回车符仍留在输入缓冲中。
getsgetline区别
最新发布
m0_71808911的博客
07-23 442
getsgetline是两个在C和C++中用于读取输入的函数,它们之间存在显著的区别
scanf() 、cincin.get()、cin.getline()、getline()、...
weixin_33774308的博客
09-22 186
2019独角兽企业重金招聘Python工程师标准>>> ...
[原创]cincin.get()、cin.getline()、getline()、gets()、getchar()的区别
weixin_30680385的博客
04-17 78
这几个输入函数经常搞不清具体特点和用法,这里稍作总结 一、cin>> 1、最基本用法,输入一个变量值 2、输入字符串,遇“空格”、“TAB”、“回车”结束,比如输入“hello world”,输出“hello” 二、cin.get() 1.用来接收字符,比如 char c; c=cin.get();//或者cin.get(c); cout<<c; ...
getchar() 、 scanf() 、与缓冲区
aibin6833的博客
11-03 124
C中的缓冲区一直是debug的重灾区,今天在写一个命令行界面的时候又遇到了这个问题,所以来总结一波。 两函数的不同之处 scanf() 会把 stdinBuff 中的特定格式数据取出,非特定格式数据则会留在stdinBuff 中,比如 while(){ scanf("%c", ); } ,当你输入一个字符串+ 回车的时候,它先存入 stdinBuff 中,之后按cha...
C/C++输入函数 scanf() gets() getline() cin.getline() cin.get() getchar()
Abelia的博客
06-14 471
一.竞赛代码要求main()函数前面必须有返回值int,结尾必须有return 0;否则代码0分! cin cout输入输出较简洁,缺点是效率低 cin接受一个字符串,遇“空格”、“TAB”、“回车”都结束 ---------------------------------------------------------------------------------------------...
C/C++ 输入字符串gets( )、scanf( )、getline( )以及单个字符getchar( )
m0_51336041的博客
11-08 2518
文章目录1、gets( )2、scanf( )3、getline( )4、getchar( )5、 坑 1、gets( ) 头文件 #include <stdio.h> 功能: 实现对字符串的输入,可接受空格、Tab(制表符)和回车,遇回车结束。 ps: 输入字符串不可以是char*类型和string,只能是字符数组如:char str[80]。也不能是整型数组如:int arr[80]。 示例: #include <stdio.h> int main() { char st
我的c/c++笔记
04-07
- **`cin.getline`, `getline`, `gets`, `getchar`**: - 这些函数主要用于从输入中读取字符串。 - **`cin.getline`**: - 用于从输入中读取一行文本。 - **`getline`**: - 更安全的替代`gets`,用于读取一行...
C/C++常用输入方法整理
Maushawkin的博客
08-16 566
C语言常用知识点整理输入常用方法基础输入C++:iostreamC:stdio.h关于字符C++ :cin.get()三级目录 输入常用方法 基础输入 C++:iostream cin:可嵌入while中实现变量的反复输入 1)cin >> (变量类型);【遇空格/Tab/回车结束】 #include <iostream> using namespace std; int main(){ char ch; while(cin>>ch){ cout <&lt
C++ cin.getlinegetline()用法详解
12-20
下面先看下C++ cin.getline用法,具体内容如下所示: 使用 C++ 字符数组与使用 string 对象还有另一种不同的方式,就是在处理它们时必须使用不同的函数集。例如,要读取一行输入,必须使用 cin.getline 而不是 getline 函数。这两个的名字看起来很像,但它们是两个不同的函数,不可互换。 与 getline 一样,cin.getline 允许读取包含空格的字符串。它将继续读取,直到它读取至最大指定的字符数,或直到按下了回车键。以下是其用法示例: cin.getline(sentence, 20); getline 函数使用两个用逗号分隔的参数。第一个参数是要存储
cincin.get(),scanf,getline的细节
09-11 209
首先讲一下缓冲区,缓冲区分多种,全缓冲、行缓冲等,其中输入缓冲区属于行缓冲。行缓冲是输入换行符时会清空缓冲区或者缓冲区满时。输入时键盘将字符信号转为二进制代码,存入键盘缓冲区,当回车时才从键盘缓冲区读入输入缓冲区,当scanf执行时会看输入缓冲区有不有数据,有就提取,也是在换行是输出,换行符也会一起进入输入缓冲区。 例如:`#include using namespace std; int mai...
关于c++cincin.get()、cin.getline()、getline()、scanfgetsgetchar的使用方法和详细说明
宇宙超粒终端控制中心的博客
12-27 1243
日常使用 c++的时候,总会接触到多种输入(通常是键盘)读取数据的对象。下面进行详细讲解与说明。保证一看就懂!
C++cin.get和cin.getline区别是?
weixin_43843498的博客
06-10 570
分为三种情况来看: 1)输入的字符串不超过限定大小 get(str,Size):读取所有字符,遇到’\n’时止,并且将’\n’留在输入缓冲区中,其将被下一个读取输入的操作捕获,影响该输入处理getline(str,Size):读取所有字符,遇到’\n’时止,并且将’\n’直接从输入缓冲区中删除掉,不会影响下面的输入处理。 2)输入的字符数超出限定的大小 get(str,Size):读取Size...
从小甲鱼C++例程弄清 scanfgetchar 函数
GPSorR的博客
02-28 229
例程及功能描述 例程: #include<iostream> using namespace std; int main(void) { int i; int sum = 0; char ch; printf("请输入一串整数和任意数目的空格:"); while (scanf("%d", &i) == 1) { sum += i; while ((ch = getchar()) == ' ') ;//屏蔽空格 if (ch == '\n') {
scanf getchar gets cin getline区别
wddpfx的博客
02-05 253
scanfgetchar 读取字符 char a, b; scanf("%c", &a); b = getchar(); scanfgetchar在读取单个字符时相同,空格、tab、回车都是字符。 scanfgets读取字符串 char str[10]; char a; scanf("%s", str); a = getchar(); printf("Str=%s***%c***", str, a); scanf读取字符时遇到空格、tab、回车时终止,并把空格、tab、回车遗留在输入
scanfgetsgetcharcincin.get、cin.getlinegetline总结
不积跬步无以至千里
04-23 538
一、scanf  scanf一般可用于读取数字、字符、字符串;  结论:  (1)当 scanf 从缓冲区中读取单个字符(%c)时,若缓冲区中第一个字符是空格、tab或换行这些分隔符时,scanf 不会将其忽略,会读取并清除。  (2)当 scanf 从缓冲区中读取数字或字符串(非单个字符)时,若缓冲区中第一个字符是空格、tab或换行这些分隔符时,scanf 会将其忽略并清除,继续读取下一
C++ cin 使用详解:cin.get()与cin.clear()
cin、cout是C++中的I/O对象,提供了比C语言的scanf和printf更方便的输入输出方式。cin.get()和cin.getline()用于读取输入,而cin.clear()和cin.sync()则用于处理输入错误和缓冲区管理。理解这些基础知识对于编写...
写文章

分类专栏

  • Lua 1篇
  • leetcode算法题库 70篇
  • SDPM 2篇
  • Python 1篇
  • 阅读心得 2篇
  • C/C++ 28篇
  • 容器 19篇
  • Linux 37篇
  • Mac 5篇
  • 算法分析/总结 1篇

最新评论

  • 【Linux】symbol lookup error: undefined symbol + nm指令定位错误

    耀栎清辉: https://www.jianshu.com/p/07df3a6c9894

  • 【C/C++】Vector的创建与初始化方法

    一个不会写代码的小白: 作者的意思是c++98等于c++11,不要骂我表情包

  • 【Linux】symbol lookup error: undefined symbol + nm指令定位错误

    半糖主义437: 请问然后怎么解决呢

  • 【C/C++】size_t详解

    ︷℡伤叻!: 可以表情包表情包

  • 【C/C++】size_t详解

    Turing Kick out: 问题在于我们如何声明个参数 改为:问题在于我们如何声明第三个参数 还有其它字面错误,挺多的,最好检查一下

大家在看

  • 帝国CMS – AutoTitlePic 自动生成文章标题图片插件
  • 蜘蛛日志在线分析工具源码 快速分析搜索引擎网络爬虫抓取记录 440
  • 数据结构与算法分析:你真的理解排序算法吗——中值排序(万字长文+代码详解)
  • 帝国CMS7.0 7.2 7.5微信登录插件

最新文章

  • 【Linux】使用Wake-on-lan配置Linux服务器远程开机
  • 【Mac】Mac通过反向代理连接内网(教育网)服务器 + 免密登陆
  • 【Mweb】Mac上Mweb发布至印象笔记报错:Error Domain=com.evernote.sdk Code=-3000
2021年3篇
2020年26篇
2019年120篇
2018年2篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家玻璃钢商业街人物雕塑桃子玻璃钢雕塑厂霍州玻璃钢气球雕塑仙林春季商场美陈焦作玻璃钢卡通雕塑淘宝商场美陈成都玻璃钢雕塑那家好玻璃钢马雕塑介绍商场创意商业美陈道具内乡玻璃钢雕塑湖南卡通玻璃钢雕塑定制商场美陈销售厂家大象玻璃钢卡通雕塑设计上海玻璃钢艺术雕塑石家庄玻璃钢海豚雕塑厂家莆田玻璃钢花盆市场西宁仿真人物玻璃钢雕塑定制商场美陈门头设计番禺玻璃钢卡通雕塑图片台州学校玻璃钢雕塑定制南阳玻璃钢人物雕塑定做厂家辽宁玻璃钢孔子雕塑制作北欧风格玻璃钢雕塑烟台学校玻璃钢雕塑定做上海大型主题商场美陈价钱北京大型商场创意商业美陈步骤广东玻璃钢透光雕塑公司朝阳玻璃钢创意雕塑珠海玻璃钢雕塑批发江苏高档玻璃钢花盆香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化