scanf返回值的用法

scanf返回值的用法,c,scanf,C,Scanf,我正在从一本书中学习C,我从循环指令开始。但是有一个示例代码我不理解 有谁能告诉我为什么作者使用了status=scanf(“%ld”和&num)?为什么有一个带有scanf的= /* summing.c -- sums integers entered interactively */ #include <stdio.h> int main(void) { long num; long sum = 0L; /* initialize sum to zero */

我正在从一本书中学习C,我从循环指令开始。但是有一个示例代码我不理解

有谁能告诉我为什么作者使用了
status=scanf(“%ld”和&num)?为什么有一个带有
scanf
=

/* summing.c -- sums integers entered interactively */
#include <stdio.h>
int main(void)
{
    long num;
    long sum = 0L; /* initialize sum to zero */
    int status;      
    printf("Please enter an integer to be summed ");
    printf("(q to quit): ");
    status = scanf("%ld", &num);
    while (status == 1) /* == means "is equal to" */
    {
        sum = sum + num;
        printf("Please enter next integer (q to quit): ");
        status = scanf("%ld", &num);
    }
    printf("Those integers sum to %ld.\n", sum);
    return 0;
}
/*summing.c——对以交互方式输入的整数求和*/
#包括
内部主(空)
{
长数;
长和=0L;/*将和初始化为零*/
智力状态;
printf(“请输入要求和的整数”);
printf(“(q)退出):”;
status=scanf(“%ld”、&num);
而(状态==1)/*=表示“等于”*/
{
sum=sum+num;
printf(“请输入下一个整数(q退出):”;
status=scanf(“%ld”、&num);
}
printf(“这些整数总和为%ld.\n”,总和);
返回0;
}
因为
scanf()
返回一个值,该值指示字符串与传递的格式的匹配程度,即有多少个参数成功地用数据填充


您应该知道,如果您阅读了某种页面或标准,如果您遇到了不知道的函数,请尽可能多地阅读它,以便了解如何使用它。

scanf
从其说明符列表中返回成功匹配项的数量。因此,如果输入“q”,scanf将返回0(因为“q”不是整数),循环将终止。

请查看scanf()的函数。它返回成功扫描的项目数。因此,返回值用于检查
scanf()
的成功性

在代码中

 status = scanf("%ld", &num);
 // code
 while (status == 1) 
scanf()
的返回值存储到
status
中,稍后检查
scanf()
是否已成功扫描
1

  • 如果返回了
    1
    ,则表示输入了
    long int
    。然后
    while()
    循环将继续,请求下一个输入
  • 如果输入
    q
    ,它将与转换说明符
    %ld
    不匹配,因此
    scanf()
    将失败,因此它将返回
    0
    。然后
    while()
    循环将终止