Chinaunix首页 | 论坛 | 博客
  • 博客访问: 499334
  • 博文数量: 176
  • 博客积分: 4045
  • 博客等级: 上校
  • 技术积分: 2491
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-19 11:23
文章分类

全部博文(176)

文章存档

2011年(7)

2009年(12)

2008年(157)

我的朋友

分类:

2008-07-25 11:40:34

字体变小 字体变大
getchar有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).getchar函数的返回值是用户输入的第一个字符的ASCII码,如出错返回-1,且将用户输入的字符回显到屏幕.如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取.也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完为后,才等待用户按键.
getch与getchar基本功能相同,差别是getch直接从键盘获取键值,不等待用户按回车,只要用户按一个键,getch就立刻返回, getch返回值是用户输入的ASCII码,出错返回-1.输入的字符不会回显在屏幕上.getch函数常用于程序调试中,在调试时,在关键位置显示有关的结果以待查看,然后用getch函数暂停程序运行,当按任意键后程序继续运行.

程序实例:
(1)#include /*应用printf函数*/
(2)#include /*应用toupper函数*/

(3)void print()
{
(3) printf("\n\t This ia an example.\n\n\t You are welcome!!\n\n");
} /*\n 表示换行;\t 表示移动8个字符位*/

(4)main()
{
(5) int flag=1; /*定义整型变量并赋值*/
(6) char ch; /*定义字符变量*/
(7) while(flag)
{
(8) printf("\n Input 'F' or 'f' to start the program,\n other to exit:");
(9) ch=getchar();
(10) ch=toupper(ch); /*得到大写字母*/
(11) getchar(); /*去掉回车符*/
(12) if(ch=='F')
(13) print();
(14) else
(15) flag=0;
}
(16) return;/*返回*/
}

getchar();永远只向缓存中输入一个字符,
在你举的例子中(9)步其实只是向缓存中存入的用户输入的第一个字母,
正常说是f
但在c中回车符也算个字符
如果没有(11)
再第二次循环中 (9)步向缓存中递交的并不是用户输入的字符
而是用户第一次打入的回车符
导致循环停止
getchar();的用法很多;
一种就是你这个程序用到的清空回车符 这种情况一般发生在在循环中涉及到输入的情况
还有一种是某些编译平台(IDE)在运行程序时并没有在程序运行后给人看结果的时间 这时候 在程序最后加上getchar()就能造成程序的暂停 给程序员度结果的机会
阅读(1323) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~