关于char类型的连续输入

这个忘了好久了

先回想吧

一 单字符

①  char m;

     scanf("%d",&m);

② char m;

  m=getchar();

  putchar(m);

二 字符数组(字符串)

①   char a[10];

    int i;

      for(i=0;i<10;i++){

  scanf("%c",&a[i]);

      }

②   char a[10];

  gets(a[10]);

  puts(a[10]);

书本上的

我今天用的连续输入char o,p,q;

char o,p,q;

scanf("%c%c%c",&o,&p,&q);

结果linux 里面没有被读出来o的量;

**********************************************************************

我知道了 要写一条scanf("%*c")清除输入缓冲区的回车键

田硕以前讲过 输入缓冲区的概念 当我输入的是 5,enter,abc(逗号起分隔作用并未在键盘输入)

scanf("%d",&m);

scanf("%c%c%c",&o,&p,&q);

是读入的 就是 5 enter a b(将enter读入了,没有读入c);

这的时候我要在第一个输入结束后清除输入缓冲区的数据scanf("%*c")

第二个scanf函数才不会读入enter,而是从a开始读入

**********************************************************************

  scanf("%*[^ ]") 把输入缓冲区中第一个换行字符前的数据全部丢弃,

  scanf("%*c")  把换行字符丢弃。

原文地址:https://www.cnblogs.com/pertinencec/p/5294113.html