C语言:scanf()语句错误读取(一)

2014-07-19 22:52:39 · 作者: · 浏览: 185

  在上一星期的文章中,每一次遇到功能选择时,总是会以输入选项所代表的数字表示,而在让一个大神帮忙看看时,发现一个问题:当输入不是数字时scanf()语句将保持不读取状态,当程序运行到这里时scanf()将会维持上一次读取数,不读取新内容,检查了好久都不知道问题,当时大神发话,这绝对是scanf()读取出问题了,应当有一个函数可以清空缓存还是什么的,解决这个问题,结果回来一查,立即对大神佩服的五体投地。

  以这个程序为例:

  #include

  int main()

  {

  int array ;

  int temp;

  int i,j;

  printf("input ten numbers(between -32768 and +32767):\n");

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

  {

  scanf("%d",&temp);

  if(temp<-32768 || temp>32767)

  {

  i--;

  printf("number must between -32768 and +32767\ntry again:\n");

  continue;

  }

  else

  {

  array[i]=temp;

  }

  }

  printf("your numbers:\n");

  for(j=0;j<10;j++)

  {

  printf(" %d ",array[j]);

  }

  printf("\ngod bye\n");

  return 0;

  }

  如果在开始输入时输入一个字母将进入死循环。

  输入:q

  输出:

  如果在输入中输入一个字母scanf将会自动读取上一次输入的值,不能再次输入。