关于getchar函数何时返回,当程序请求键盘输入时
2014-11-16 02:26
435 查看
用getchar()读入一个字符,当程序请求从键盘输入时,getchar()函数何时返回?
int getchar(void); getchar()从控制台读取一个字符,并回显。当程序调用getchar时,程序就等着用户按键。用户输入的字符被存放在键盘缓冲区中,直到用户按回车为止(回车字符也放在缓冲区中)。当用户键入回车之后,getchar才开始从stdio流中每次读入一个字符。getchar函数的返回值是用户输入的第一个字符的ASCII码,如出错返回-1,且将用户输入的字符回显到屏幕。如用户在按回车之前输入了不只一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取。也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完为后,才等待用户按键。 int main(void) { int ch1=getchar(); int ch2=getchar(); int ch3=getchar(); printf("%d %d %d ",ch1,ch2,ch3); int ch4=getchar(); int ch5=getchar(); int ch6=getchar(); printf("%d %d %d ",ch4,ch5,ch6); } 运行结果分析: (1)输入123456回车,打印出49 50 51 52 53 54 (2)输入12345回车,打印出49 50 51 52 53 10(10为'\n'的ASCII码) (3)输入123回车,打印出49 50 51 ,程序执行到 int ch5=getchar()等待输入。再输入456回车,打印出10 52 53 (4)输入1回车,程序执行到 int ch3=getchar()等待输入。再输入23456回车,打印出49 10 50 51 52 53
相关文章推荐
- getchar()函数的返回值赋给char型,用if(ch=getchar() != EOF)测试,输入ctrl+z同样可以结束循环的分析
- 关于C语言使用输入函数后键盘缓冲区还有多余字符没的问题
- 实验5-2: 编制程序,输入m、n(m≥n≥0)后,计算下列表达式的值并输出。 要求将计算阶乘的运算编写作函数fact(n),函数返回值的类型为float
- 有一函数,编写一个程序,从键盘输入一个x值,程序输出y的值
- C++:利用如下公式,编写函数计算∏的值,直到最后一项的绝对值小于e,主程序接收从键盘输入的e,输出∏的值(保留5位小数)。 ∏/4 = 1-1/3+1/5-1/7...
- 关于Unix上读取键盘输入的问题(curses) Esc 和 PgUp返回的值相同,如何区别?
- 实验5-2 编制程序,输入m、n(m≥n≥0)后,计算下列表达式的值并输出。 要求将计算阶乘的运算编写作函数fact(n),函数返回值的类型为float。
- 写一个函数,输入一个二叉树,树中每一个节点存放了一个整数值,函数返回这棵二叉树中相差最大的两个节点间的差值绝对值。请注意程序效率。
- 设计一个程序,从键盘上输入若干字符串,利用算法库中的查找函数对给定的字符串进行查找,将查找后的结果输出
- [阿里巴巴2015校园招聘]写一个函数,输入一个二叉树,树中每个节点存放了一个整数值,函数返回这棵二叉树中相差最大的两个节点间的差值绝对值。请注意程序效率。 .
- c程序:有一函数当x<0时y=1,当x>0时,y=3,当x=0时y=5,编程,从键盘输入一个x值,输出y值
- 写一个函数,输入一个二叉树,树中每个节点存放了一个整数值,函数返回这棵二叉树中相差最大的两个节点间的差值绝对值。请注意程序效率。
- 编写一个程序,其main()调用一个用户定义的函数(以光年值为参数,并返回对应天文单位 的值).该程序按下面的格式要求用户输入光年值
- 编写一个程序,读取键盘输入,直到遇到@符号为止,并回显输入(数字除外),同时将大写字符转换为小写,将小写字符转换为大写(别忘了cctype函数系列)
- 写一个函数,输入一个二叉树,树中每个节点存放了一个整数值,函数返回这棵二叉树中相差最大的两个节点间的差值绝对值。请注意程序效率。
- 3.c中关于程序中的gets()语句被跳过,不接受键盘输入的原因
- 实验5(2)编制程序,输入m、n(m≥n≥0)后,计算下列表达式的值并输出。 要求将计算阶乘的运算编写作函数fact(n),函数返回值的类型为float
- 关于C库函数getchar输入结束符的问题
- 编写程序:从键盘上输入若干个整数(以输入-1作为结束标识),输出这些数中的最大值和最小值,要求编写一个函数实现最大值和最小值的求取。
- 关于C++程序键盘输入文件结束符