17.05.20 总结
来源:互联网 发布:考研英语二参考书知乎 编辑:程序博客网 时间:2024/05/20 18:18
以字符序列的方式输出到计算机显示器屏幕上,那么我的程序内存作为数据源而显示器驱动程序作为数据目标,如果数据源直接对数据目标发送数据的话。数据目标获得第一个字符,便将它显示。然后从端口读取下一个字符,可是这时就不能保证数据源向端口发送的恰好是第二个字符(也许是第三个,而第二个已经在数据目标显示时发送过了)。这样的话就不能保证输出的数据能完整的被数据目标所接受并处理。
为了解决这个问题,我们需要在数据源与数据目标中间放置一个保存完整数据内容的区域,那就是 “缓冲区”。这样的话, 数据源只是从缓冲区中依次取出下一个数据。从而保证了数据发送的完整性,同时也提高了程序的效率。当然getch(),getche()没有用到缓冲区。
getch()输入单个字符而不显示出来,除非添加putchar()或printf()语句 (可用于密文输入)
getche()输入单个字符并显示出来(这一点同getchar(),但getchar()可输入字符串)
密文输入例子
#include <stdio.h>#include <conio.h>#include <string.h>int main(){char ch;char a[6] = "abcde";char b[10];printf("User : Irelia\nPassword : ");int i = 0;while(1){ch = getch();if(ch=='\r')//'\r'表示为回车,而'\n'包含两个动作,一个是回车,一个是换行。break;//再说键盘上的回车键是对应'\n'的,即为回车和换行两个动作,而你用getch()来接收字符只能接收到一个动作,else//即回车这个动作,表示为'\r',换行将被下一次getch()接收,但是无论如何也不会等于'\n'的,所以会无限循环了 {b[i] = ch;putchar('*');}i++;}if(strcmp(a,b)==0)printf("\nWelcome back,Irelia!");else printf("\nThe password is error!");getchar();return 0;}
阅读全文
0 0
- 17.05.20 总结
- 总结20
- 17.05.15小总结
- Java web学习总结20: JavaBean总结
- hibernate总结(10-20)
- hibernate总结(20-30)
- spring2总结(20-30)
- 2012.4.20总结
- 2012.7.20总结
- Java总结(20) 代理
- 2014.02.20 等待总结
- 第20周总结
- 2014.10.20学习总结
- 2015.07.20总结
- 2016.1.20个人总结
- 6-20定时器总结
- 【总结】2015.12.20CXB
- 20 ViewPager总结
- 应届生面试相关问题
- FreeMarker简单使用及介绍
- spring.xml配置文件连接数据库
- codeforces——25A——IQ test
- 【2014年第五届蓝桥杯C/C++程序设计本科B组决赛 出栈次序(结果填空) 】
- 17.05.20 总结
- 总结9
- 图论(十)最小生成树-Prim算法
- 一个项目里面包含多个子项目jar包的配置实现
- Spring思维导图,让Spring不再难懂(ioc篇)
- Android Java层与Jni层的数组传递
- android studio 3.0 preview 解决Gradle: Configure Project or Gradle: Resolve Dependencies ':classpath
- 【Caffe】Caffe,CUDA,cuDNN安装指南,以及各种问题的解决方法(Ubuntu14.04)
- Hive学习 第五课 修改表名修改列名添加列并删除或替换列。