清如许 发表于 2022-12-9 16:25:59

想问一下大佬们,scanf函数的返回值是EOF啊?

while(x=(scanf("%f",&a))!=EOF)
这个循环结束的条件是什么呀?我记得scanf在读取数值是会将回车(\n)跳过,
回车也会从缓冲区释放,所以scanf最后是没有读取到数值的,那他的返回值是啥啊?
请教了!

tommyyu 发表于 2022-12-9 16:40:29

scanf返回的应该是能够正确读入的变量的个数

这个好像没有循环结束条件,我刚刚试了一下,这个好像不论输入什么都会继续循环{:10_269:}

清如许 发表于 2022-12-9 17:14:34

tommyyu 发表于 2022-12-9 16:40
scanf返回的应该是能够正确读入的变量的个数

这个好像没有循环结束条件,我刚刚试了一下,这个好像不论 ...

确实,我也一直解决不了这个问题

tommyyu 发表于 2022-12-9 17:15:58

清如许 发表于 2022-12-9 17:14
确实,我也一直解决不了这个问题

我感觉要改成while((scanf("%f",&a))!=0)

jackz007 发表于 2022-12-9 18:08:12

#include <stdio.h>

int main(void)
{
      float a                        ;
      int x                            ;
      while((x = scanf("%f" , & a)) != EOF) {
                while(getchar() != '\n') ;   // 读取一个数后必须清空键盘缓冲区,否则,一旦输入的是非数字,就会立即陷入死循环
                if(x) printf("%f\n" , a) ;
                else printf("error.\n");
      }
}

清如许 发表于 2022-12-9 19:02:05

jackz007 发表于 2022-12-9 18:08


大佬你好,为啥我将getchar放到后面就不行了呢,麻烦了
        while(x=(scanf("%f",&a))!=EOF)
        {
                if(x!=0)
                {
                        sum=sum+a;
                }
                else
                {
                        getchar();
                }
        }

jackz007 发表于 2022-12-9 19:15:19

         你为什么一定要顽固坚持这样写:
      while(x=(scanf("%f",&a))!=EOF)
         怎么就不能接受我的
      while((x = scanf("%f",&a)) != EOF)
         你的就是错的!!!
页: [1]
查看完整版本: 想问一下大佬们,scanf函数的返回值是EOF啊?