getchar() 与 getch()
来源:互联网 发布:阿里云邮的企业版 编辑:程序博客网 时间:2024/06/05 10:35
网络有许多关于getchar()与getch()这两个函数的差别,但是有一点很少仔细分析;
下面我在vs2010平台举例子来说明:
example_01.c#include<stdio.h>#include<conio.h>int main(void){ char ch; while((ch=getchar()) != '\n') { putchar(ch); } return 0;}
一直输入字符,直到“你摁下电脑键盘上的enter键”程序才结束;
example_02.c#include<stdio.h>#include<conio.h>int main(void){ char ch; while((ch=getch()) != '\n') { putchar(ch); } return 0;}
而这个程序却会陷入死循环,不论你摁什么键,包括“电脑键盘上的enter键”。但是如果你把example_02.c程序中的'\n'换成'\r',那么这个程序在你摁下“你电脑键盘上面的enter键”后跳出while循环,此时,example_01.c与example_02.c功能一样。
现在我们再举两个例子:
example_11.c#include<stdio.h>#include<conio.h>int main(void){ char ch; while((ch=getchar()) != '\r') { putchar(ch); } return 0;}
example_12.c#include<stdio.h>#include<conio.h>int main(void){ char ch; while((ch=getch()) != '\r') { putchar(ch); } return 0;}
example_11.c陷入了死循环,除非你能在“你电脑键盘上面输入'\r'字符”。反正我没有找到。example_12.c可以正常工作,它提示你输入字符,直到你输入“电脑键盘上面的enter键”。
这是为什么呢?理由是:
1:getchar函数从stdin流中读取一个字符,即键盘缓冲区。而getch函数是从键盘直接读取一个字符。
2:在windows操作系统中,“电脑键盘上面的enter”代表两个字符'\r'和'\n','\r'是回车字符,'\n'是换行字符。
3:当你摁下enter键,时,转化为标准的字符流时存储在键盘缓冲区,变成了'\n'字符。但是函数如果直接从键盘读取字符时,字符还没有来得及转换。
这是我的个人理解,如果有不当之处,盼请告知。</span>
0 0
- getchar() 与 getch()
- getch(),getchar()
- getchar与getch
- getch(),getche()与getchar()
- getch()与getchar()
- getchar 与 getch
- getchar()与getch()区分
- getchar() 与getch()
- 辨析getchar()和getch()
- getchar() 与 getch() 的区别
- getchar、getch区别与用法
- getchar、getch区别与用法
- getchar()与getch()的区别
- getchar、getch区别与用法
- getchar、getch区别与用法
- getchar、getch区别与用法 .
- getchar与getch的区别
- getchar(),getch(),getche(),gets(str)
- selenium(webdriver)学习笔记1--ChromeDriver
- opencv_objdetect249d.lib未加的错误 CascadeClassifier::~CascadeClassifier
- 图解Javascript上下文与作用域
- PHP--froeach语句
- Leetcode#7||Reverse Integer
- getchar() 与 getch()
- android service详解
- 单表60亿记录等大数据场景的MySQL优化和运维之道
- swift-08-元组分解和数组
- MySql 入门笔记整理
- Hadoop作业性能指标及参数调优实例 (一)Hadoop作业性能异常指标
- 分布式系统的事务处理
- Java快速开始
- Android之旅---广播(BroadCast)