项少龙喜欢善柔吗:c语言getchar()能接受多个字符?

来源:百度文库 编辑:中科新闻网 时间:2024/05/09 01:34:51
看书上写的只能接受一个字符。
但是在一例道题中看到 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里。

对,getchar()用了输入缓存,输入回车后getchar()才在缓存内读一个字符,getch()没有用缓存不用输回车就读入且不回显(一般用来读密码),不过linux里没有getch()。

getchar函数只能接受单个字符,输入数字也按字符处理。输入多于一个字符时,只接收第一个字符。

只能接受一个,c=getchar() 是把接受的一个值赋值给c