C语言非缓冲输入,c/c++ 缓冲输入和非缓冲输入

这篇博客介绍了C语言中的缓冲输入和非缓冲输入,强调了默认的缓冲输入过程,即键盘输入的字符先存入缓冲区,再由程序处理。非缓冲输入则允许键盘输入直接进入程序。getchar()、getche()和getch()是用于非缓冲输入的函数,其中getche()提供回显,getch()则不回显。博客还探讨了如何利用这些函数实现对用户输入的即时响应,并提到了ASCII码表以及键盘常用ASCII码的差异,指出C/C++中使用的是字符ASCII码而非键盘扫描码。
摘要由CSDN通过智能技术生成

C语言有缓冲输入和非缓冲输入两种情况,默认缓冲输入,因为有的计算机不支持非缓冲输入。缓冲输入下,通过标准输入(键盘)输入的字符会先存在输入缓冲区里,同时会回显到屏幕上。这样就可以在输入回车(将输入缓冲区清空,并发送到程序的输入队列中,供程序使用)之前,进行输入的修改。但是也支持非缓冲输入,不需要输入回车来将输入发送给程序,而是键盘的任何输入都直接发送到程序的输入队列中。

简言之,缓冲输入的流程是:键盘-》输入缓冲区-》程序中的输入队列 非缓冲输入的流程是: 键盘-》程序中的输入队列

getche()和getch()这两个函数是用于非缓冲输入的,前者提供回显(记:多一个字母,多一个小功能),后者不提供回显。

C函数一般都有返回值,只是有时候不需要获取这个返回值罢了。

printf返回打印的字符的数目,有输出错误则返回负数。

scanf返回读入项目的个数,如果读入失败(比如想读入一个%d,但是用户却输入的'a')会返回0,这时候输入队列头指针不向后移,下次getchar或者scanf还是从刚才的位置开始;读到文件结尾返回EOF(一般在头文件中会有#define

EOF -1)。

测试getche和getch的例子如下所示:(在c++中需要加上头文件 #include "conio.h")

#include "stdio.h"

int main(void)

{

int d;

char ch;

printf("Input a character:");

ch=getchar();

printf("\nYou input a '%c'\n", ch);

ch = getche();

printf("\nYou input a '%c'\n", ch);

ch=getch();

printf("\nYou input a '%c'\n", ch);

while((ch=getchar())!='\n')

{

putchar(ch);

}

getchar();

return 0;

}

输入:abcd[enter]jk

输出:a

j

k

bcd //说明输入队列不受getche和getch这些非缓冲函数的影响

利用 getche()和 getch()函数就可以对用户的单个输入做及时的响应

配合完成的ASCⅡ码表,就可以得知用户的输入

ASCⅡ码表如下:

码值

控制字符

码值

控制字符

码值

控制字符

码值

控制字符

码值

控制字符

0

NUL

32

(space)

64

@

96

128

Ç

1

SOH

33

65

A

97

a

129

ü

2

STX

34

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值