老牛来学习 发表于 2020-2-11 19:29:42

S1E14中scanf返回值问题

int a,b;
scanf("%d%d",&a,&b)
函数返回值为int型。如果a和b都被成功读入,那么scanf的返回值就是2;
如果只有a被成功读入,返回值为1;
如果a和b都未被成功读入,返回值为0;


以上是网上的解释
所以怎么才算成功读入,比如输入两个整型就算成功读入,如果输入字符型就不可以?
还有他上面的意思好像是说返回值为int型,还有不为int型的函数吗

以下代码注释中还有个问题
#include <stdio.h>

int main()
{
      int num = 0;
      long sum = 0L; // 0L表示类型为long的0
      int status;

      do
      {
                printf("请输入合法的数字:");
                sum = sum + num;
                status = scanf("%d", &num);          //这里的意思是如果输入为整型成功读入status的值就为1,如果为字符型失败就为0?
      } while(status == 1);

      printf("结果是:%ld\n", sum);

      return 0;
}

谢谢!

magicpower 发表于 2020-2-26 20:58:48

输入字符型不可以,不能和printf搞混,printf你可以用d去打印一个字符常量,但在scanf中不行,d只能读整数,c只能读字符
页: [1]
查看完整版本: S1E14中scanf返回值问题