在笔试中,经常见到字符的读入与输出的题目。逆序打印输入时最常见、最基本的考题,复杂点的就是统计单词、逆序打印单词之类的。难点是如何判断输入的结束,如果用getchar函数,其输入结束符为EOF(其打印值为-1),c=getchar(); //c的类型为Int型,因为EOF==-1,那么scanf函数的使用方法呢?
#include<stdio.h>
 int main()
 {
        int i;
        char ch;
        for(i=0;i<=3;i++)
        {
               printf("%d ---- ",i);
               scanf("%c", &ch);
               printf("/n");
        }
         return 0;
 }
 运行结果:
 0 ---- a
 1 ----
 2 ---- b
 3 ----
 产生其原因在于:
 因为 scanf %c 只是读入一个字符,而你在输入时实际上输入的是:某个字符
 +Enter,Enter 产生的/n 也会停留在输入缓冲区中,下次调用 scanf %c 时就会直接读到
 它而不是等待你再次输入!同理,getchar()也有类似的行为。所以我们才不提倡使用
 scanf("%c", ...),尤其是把它在循环中。
 解决的方法:
 (1)、将 scanf("%c", &ch); 修改为:
         scanf(" %c", &ch);   /*在%前加上一个空格*/
 (2)、将 scanf("%c", &ch); 修改为:
         scanf("%c%*c", &ch);