c语言getchar()能接受多个字符?

来源:百度知道 编辑:UC知道 时间:2024/05/13 23:39:19
看书上写的只能接受一个字符。
但是在一例道题中看到 c=getchar(),是不是这样就可以接收多个字符了?

getchar函数每次只从缓冲区中接受一个字符。


getchar有一个int型的返回值。

当程序调用getchar时,程序就等着用户按键,用户输入的字符被存放在键盘缓冲区中,直到用户按回车为止(回车字符也放在缓冲区中)。当用户键入回车之后,getchar才开始从stdin流中每次读入一个字符,getchar函数的返回值是用户输入的第一个字符的ASCⅡ码,如出错返回-1,且将用户输入的字符回显到屏幕。


如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取。也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完为后,才等待用户按键。


举例如下:

char ch;
ch = getchar();   // 接收用户输入的第一个字符,并赋值给字符变量ch  返回值为输入第一个字符的ASCII码

c语言getchar()使用问题 -|xchbin 发表于 2005-6-11 15:58:00

最近在使用getchar()函数时老是出现问题,仔细写了点实验程序才发现问题:原来在使用getchar时候系统使用了缓存机制,可以将每次输入的多个字符暂存起来,但是返回的是第一个字符。
为了每次仅使接收的第一个字符起作用,我们必须人为的将缓存清空
将下面的程序存为try.c文件,在linux下用gcc -o try -g try.c编译,然后执行./try

程序看链接。。。。。。。

可见我们在输入一次命令espy(以确定键结束)后程序自动执行了四次,这时因为它把第一次输入的spy包括确定键都存储起来下次的时候使用了,所以我们要加入清空缓存的指令,即将上面屏蔽的部分打开程序就好了.

只能接受一个字符,c=getchar()把接受的字符(ASCII码)存到了变量c里。
<