当前位置:  开发笔记 > 编程语言 > 正文

当scanf在c中返回0并且不起作用时

如何解决《当scanf在c中返回0并且不起作用时》经验,为你挑选了1个好方法。

'当没有成功的任务时'我知道scanf返回0表示它,但这是唯一的吗?这是我的代码:

 #include
  int main(void) {
      int val,x;
      x=scanf("%d",&val);
     if(x==1)
       printf("success!");
     else{
       printf("try again\n");
       scanf("%d",&val);
      }
   return 0;
 }

如果我输入一个数字,它工作正常,但如果我输入一个字符scanf不再工作,这就是我得到的:

   k
   try again
   process returned 0 (0x0)  execution time :2.578 s
   press any key to continue.
   _

意思是它不允许我输入新值,为什么会这样?代码中有什么问题吗?如果是的话我该如何解决?我应该停止使用scanf吗?



1> R Sahu..:

如果scanf不起作用,则无效数据仍保留在流中.在输入更多数据之前,您必须先从流中读取并丢弃数据.

#include
int main(void) {
   int val,x;
   x=scanf("%d",&val);
   if(x==1)
      printf("success!");
   else{
      // Discard everything upto and including the newline.
      while ( (x = getchar()) != EOF && x != '\n' );
      printf("try again\n");
      scanf("%d",&val);
   }
   return 0;
}

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有