代码改变世界

getchar() function

2009-05-06 14:42  cesc711  阅读(166)  评论(0编辑  收藏  举报

昨天写了一个最简单的利用stack的行编辑器。用的是getchar()方法来读取键盘的输入。
函数原型:
int getchar()
getchar()方法返回的是所读取到的字符的ASCII码值。当getchar()被调用的时候,就等待用户按键。用户输入的字符被放在键盘缓冲区中,直到按回车键为止(回车也放在缓冲区中)。直到用户按下回车键的时候,getch
ar()方法开始从stdin流中每次读取一个字符。如果用户输入了不止一个字符,其它字符会被放在键盘缓冲区中,等待后续的getchar()方法调用。也就是说,后续的getchar()没有在等待用户输入,而是直接读取键盘缓冲区中的字符。直到缓冲区中的字符读完之后,才等待用户继续输入。
我的用法是:

 1 void LineEdit(){
 2     SqStack st(20);
 3     int c;
 4     while((c=getchar())!='\n'){
 5         switch (c)
 6         {
 7         case '#':
 8             st.Pop();
 9             break;
10         case '@':
11             st.ClearStack();
12             break;
13         default:
14             st.Push(c);
15             break;
16         }
17     }
18     st.TraverseStack();
19 }