scanf返回值的用法
我正在从一本书中学习C,我从循环指令开始。但是有一个示例代码我不理解 有谁能告诉我为什么作者使用了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 */
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()
循环将终止