scanf()、getchar()、gets()、cin之间的区别
来源:互联网 发布:还原软件哪个好 编辑:程序博客网 时间:2024/05/22 06:13
scanf()、getchar()、gets()、cin之间的区别
http://blog.sina.com.cn/s/blog_6c26d57b01011qzn.html
scanf()、getchar()、gets()
第一:要注意不同的函数是否接受空格符、是否舍弃最后的回车符的问题!
读取字符时:
scanf()以Space、Enter、Tab结束一次输入,不会舍弃最后的回车符(即回车符会残留在缓冲区中);
getchar()以Enter结束输入,也不会舍弃最后的回车符;
读取字符串时:
scanf()以Space、Enter、Tab结束一次输入
gets()以Enter结束输入(空格不结束),接受空格,会舍弃最后的回车符!第二:为了避免出现上述问题,必须要清空缓冲区的残留数据,可以用以下的方法解决:
方法1:C语言里提供了函数清空缓冲区,只要在读数据之前先清空缓冲区就没问题了!
方法2:自己取出缓冲区里的残留数据。
scanf("%[^\n]",string);
cin
一.cin<<
该操作符是根据后面变量的类型读取数据。
输入结束条件
对结束符的处理 :丢弃缓冲区中使得输入结束的结束符(Enter、Space、Tab)
二.cin.get()
该函数有三种格式:无参,一参数,二参数
即cin.get(), cin.get(char ch), cin.get(array_name,Arsize)
读取字符的情况:
输入结束条件:Enter键
对结束符处理:不丢弃缓冲区中的Enter
cin.get() 与 cin.get(char ch)用于读取字符,他们的使用是相似的,
即:ch=cin.get()与 cin.get(ch)是等价的。
三.cin.getline()
cin.getline() 与 cin.get(array_name, Arsize)的读取方式差不多,以Enter结束,可以接受空格字符。按照长度(Arsize)读取字符,会丢弃最后的Enter字符。
但是这两个函数是有区别的:
cin.get(array_name, Arsize)当输入的字符串超长时,不会引起cin函数的错误,后面的cin操作会继续执行,只是直接从缓冲区中取数据。但是cin.getline()当输入超长时,会引起cin函数的错误,后面的cin操作将不再执行。
- scanf()、getchar()、gets()、cin之间的区别
- scanf()、getchar()、gets()、cin之间的区别
- scanf()、getchar()、gets()、cin之间的区别
- cin ,getchar,gets,scanf区别
- scanf/getchar/gets/cin区别
- 区别cin,scanf,gets,getchar
- cin与getchar、scanf之间的区别
- HDU 1010 奇偶剪枝,scanf,getchar,gets,cin的区别
- cin,scanf,gets,getline,getchar的一些区别和注意事项
- gets,scanf,getchar,cin.getline的用法
- scanf()、gets()、getchar()的区别
- scanf getchar gets 的区别
- scanf() getchar()和gets()等函数之间的区别
- scanf,getchar,gets,cin用法
- Scanf,getchar与gets,cin
- cin,cin.get,cin.getline;scanf,getchar;scanf,gets
- cin,cin.get,cin.getline;scanf,getchar;scanf,gets
- C gets()、scanf和getchar()的区别
- C++动态创建和构造派生类
- NJUST 1739 - Count The Carries
- PSP自制固件procfw编译 – 小问题汇总
- 【新手教程】如何向App Store提交应用
- 深入浅出理解索引结构
- scanf()、getchar()、gets()、cin之间的区别
- 她也爱莫难助啊和ASP抓取最新动态
- 基于VTK的MFC应用程序开发(3)
- Cocoa Core Competencies 的Object creation 和IOS面试题示例:写一个NSString类的实现
- hdu 1394
- C/C++产生随机数
- 数据库进阶系列之一:漫谈数据库索引
- C++读书笔记之 文件与流 文件读写操作 通过指针获取文件大小
- ExtJS Button的事件和方法定义