C语言笔记-getchar等蛋疼设定 [可能已解决]

疑问先, getchar()只能接受一个字符, putchar()只能输出一个字符, 为啥下面这个例子可以输出好多个字符呢...

 1 #include <stdio.h>
 2 int main()
 3 {
 4     int ch;
 5     while((ch=getchar())!=EOF)
 6     {
 7         putchar(ch);
 8     }
 9     return 0;
10 }

结果:

this is a long long sentence.... //这句是我输入的
this is a long long sentence.... //这句就是输出的

后来读了其他解释的文章, 我特么好像明白了! 

没准是我输入的整段句子都进了缓冲区, getchar()一次一个字符的存,putchar()一次一个字符的输出, 然后只要读取的不是EOF, 就一直输出, 那是不是我写一篇文章都能给我输出来!?

结果:

1 你看我在写一篇文章哦!看看它是不是都能给我输出出来!!!//这句是我输入的
2 你看我在写一篇文章哦!看看它是不是都能给我输出出来!!!//这句是它输出的

后来例子作者给出了等效的代码:

1 上述代码等同于:
2 while(1) //无限循环下去,只要不是EOF
3 {
4     ch=getchar();
5     if(ch==EOF)
6     {
7         break;
8     }
9     putchar();

看来应该是这样了吧...

于是可以拿来进行这个例子(计算输入流中出现的数字字符数.)

 1 //计算输入流中出现的各数字字符数
 2 #include <stdio.h>
 3 int main()
 4 {
 5     int n,number;
 6     int a[10]={0};//设立一个数组,代表0~9这10个不同的数字,赋值0.
 7     while((number=getchar())!=EOF)
 8     {
 9         switch(number)
10         {
11             case'0'://注意是case '0',不是case(0)
12                 a[0]++;
13                 break;
14             case'1':
15                 a[1]++;
16                 break;
17             case'2':
18                 a[2]++;
19                 break;
20             case'3':
21                 a[3]++;
22                 break;
23             case'4':
24                 a[4]++;
25                 break;
26             case'5':
27                 a[5]++;
28                 break;
29             case'6':
30                 a[6]++;
31                 break;
32             case'7':
33                 a[7]++;
34                 break;
35             case'8':
36                 a[8]++;
37                 break;
38             case'9':
39                 a[9]++;
40                 break;
41         }
42     }
43     printf("\n各数字出现次数:");
44     for(n=0;n<10;n++)
45     {
46         printf("\n%d:%d次",n,a[n]);
47     }
48     return 0;
49 }

结果:

5.3495346956991216495502//这个是我输入的,回车
^Z//按ctrl+z.回车

各数字出现次数:
0:1次
1:2次
2:2次
3:2次
4:3次
5:5次
6:3次
7:0次
8:0次
9:5次

 

posted @ 2016-04-04 16:52  小样和牛牛  阅读(221)  评论(0编辑  收藏  举报