首页 > 技术文章 > 31.清空scanf()、fgets() 缓冲区数据

bajiaotai 2021-08-23 15:12 原文

#include <stdio.h>

int main(void)
{
  char * name;
  puts("第一次接受键盘输入:1 2 3 4 5");
  int d ;
  scanf("%d",&d);
  printf("打印1:%d\n", d );
  //清空缓冲区
  while(getchar() != '\n')
    puts("消费开始...");
    //continue;
  puts("第二次接受键盘输入:6 7 8 9 10");
  int d1 ;
  scanf("%d",&d1);
  printf("消费1:%d\n", d1 );
  printf("消费2:%c\n", getchar());
  printf("消费3:%c\n", getchar());
  printf("消费4:%c\n", getchar());
  //清空缓冲区
  while(getchar() != '\n')
    continue;
  
  puts("请输入12345abcde");
  fgets(name, 5, stdin);
  printf("首次消费:%s\n",name );
  //清空缓冲区
  // while(getchar() != '\n')
  //   continue;
  printf("消费缓冲区:%c\n", getchar() );
  printf("消费缓冲区:%c\n", getchar() );
  printf("消费缓冲区:%c\n", getchar() );

  /*
  缓冲区数据产生:
    scanf()、fgets() 函数会将 键盘输入内容存储到缓冲区内(包括\n),当第二次调用scanf() 或者 getchar() 时,如果缓冲区内还有数据,会直接获取到缓冲区内的数据
  清空缓冲区的方法:
    通过getchar()将缓冲区的剩余数据消费完
      while(getchar() != '\n')
      continue;
  */

  return 0;
}
 

 

推荐阅读