hdu1062_Text Reverse(stack)

 1 #include<iostream> 
 2 #include<stdio.h>
 3 #include<stack>
 4 using namespace std;
 5 int main(){
 6     int n;
 7     char ch;
 8     scanf("%d",&n);
 9     getchar();       
10     while(n--){
11         stack<int> s;
12         while(1){
13             ch=getchar();
14             if(ch==' '||ch=='\n'||ch==EOF){
15                 while(!s.empty()){
16                     printf("%c",s.top());//输出栈顶 top返回栈顶元素但不会删除
17                     s.pop();             //清楚栈顶 pop删除栈顶元素但不会返回,所以使用时要先top获得栈顶元素,再pop删除
18                 }
19                 if(ch=='\n'||ch==EOF)
20                 break;
21                     printf(" ");
22             }
23             else s.push(ch);//入栈
24         }
25         printf("\n");
26     }
27     return 0;
28 }

注:

当程序调用getchar时,程序就等着用户按键。用户输入的字符被存放在键盘缓冲区中,直到用户按回车为止。当用户键入回车之后,getchar才开始从stdio流中每次读入一个字符。

getchar函数的返回值是用户输入的字符的ASCII码,若文件结尾则返回-1(EOF),则将用户输入的字符回显到屏幕。如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取。

也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完后,才等待用户按键。

没有“getchar();”,那么系统就会将我们的‘\n’符当作输入的下一个字符,也就是说它的作用是吃掉放在缓冲区的‘enter’字符。



posted @ 2020-04-26 22:38  一只蒟蒻也有大佬梦  阅读(139)  评论(0编辑  收藏  举报