一段C程序分析
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 void main() 5 { 6 int i; 7 int sum = 0; 8 char ch; 9 10 printf("请输入一串整数和任意数目的空格: "); 11 12 while( scanf("%d", &i) == 1 ) 13 { 14 sum += i; 15 16 while( (ch=getchar()) == ' ' ) 17 ; 18 if( ch == '\n' ) 19 { 20 break; 21 } 22 23 ungetc( ch, stdin ); 24 } 25 26 printf("结果是: %d", sum); 27 printf("\n"); 28 system("pause"); 29 }
分析:该程序让用户在终端输入一连串的数字和空格,以换行符结束输入,并计算数字之和。
scanf("%d",&i)会忽略开头的一系列空格取到第一个数字,随后的空格会被getchar()接收并吸收掉。当ch = getchar()再次遇到数字时,需要将ch中的数值返回到stdin流中(例如11 22,getchar()将在一系列空格后吸收到2,此时需要将2返回到输入流中)。当getchar()遇到的字符为回车符时,将结束输入。
posted on 2014-03-16 16:31 stackhacks 阅读(172) 评论(0) 编辑 收藏 举报