scanf的返回值及其应用(多组输入)

目录

 一.scanf的返回值:

二.什么是EOF

三.关于scanf函数在多组输入中的应用

四.扩展了解


 一.scanf的返回值:

Return Value

Both scanf and wscanf return the number of fields successfully converted and assigned; the return value does not include fields that were read but not assigned. A return value of 0 indicates that no fields were assigned. The return value is EOF for an error or if the end-of-file character or the end-of-string character is encountered in the first attempt to read a character.

上面这段话的意思是:

scanf 和 wscanf 都返回成功转换和分配的字段数;返回值不包括已读取但未分配的字段。返回值 0 表示未分配任何字段。返回值为 EOF 表示错误,或者在第一次尝试读取字符时遇到文件结束字符或字符串结尾字符。

简单的来讲就是:

scanf函数返回的值是:实际读取到的数据的个数;

scanf函数读取失败的时候,返回的是EOF。

#include <stdio.h>

int main()
{
	int a = 0, b = 0;
	char c;
	printf("%d\n", scanf("%d %d %c", &a,&b,&c));
	return 0;
}

由下图可见当读取了三个数据的时候,scanf的返回值为3: 

二.什么是EOF

EOF的全称是end of file,是文件结束的标志:

我们在VS2022中输入EOF,右击选择转到定义(要学习这种方法),可以看到EOF的实质就是-1。

三.关于scanf函数在多组输入中的应用

下面是对应实现的代码:

#include <stdio.h>

int main() 
{
    char a[200];
    int i=0;
    while(scanf("%c",&a[i])!=EOF)//这里便是实现多组输入的代码,只要读取成功,便会进入循环。
    {
        printf("%c\n",a[i]+32);
        i++;
        getchar();
    }
    return 0;
}

需要格外注意的是:

多组输入过程中要注意“回车”也是字母,所以要“吸收”(getchar())掉该字母。

需要注意的是在Windows环境下输入ctrl+z即可结束多组输入,至于输入几次是和编译器有关的在VS2022环境下需要输入两次

 

四.扩展了解

你可能还需要了解printf的返回值:

printf的返回值介绍

 手把手教你下载VS2022

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值