scanf详解

        在C语言中scanf作为重要的输入操作函数,对于熟悉C语言有重要意义。

        1.头文件

scanf和printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include <stdio.h>。它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。

        2.格式

如:

#include<stdio.h>
int main()
{
	int a;
	scanf("%d", &a);
	return 0;
}

 也就是scanf(“格式”,地址);的形式,但是在VS2019等编译器上编译时会报错,此时只需要在程序第一行加上

#define _CRT_SECURE_NO_WARNINGS 1

就可以正常编译了。

在一些特殊情况如需要输入多个值

#include<stdio.h>
int main()
{
	int a,b;
	scanf("%d %d", &a,&b);
	return 0;
}

在窗口输入时也应该按照双引号中的格式进行输入,如上面这个程序的输入就需要输入一个整数+空格+整数

3.scanf的返回值

首先我们来看这个程序

#include<stdio.h>
int main()
{
	int a,b;
	int c=scanf("%d %d", &a,&b);
	printf("%d", c);
	return 0;
}

通过运行我们发现输入两个值后输出结果为2 

scanf返回值为读取到的输入值的个数,由此我们可以进一步延伸

当我们需要输入多组数据也就是一下子需要输入多个数时,我们可以根据scanf的返回值来进行一个循环的判断

#include<stdio.h>
int main()
{
	int a,b;
	while (scanf("%d %d", &a, &b) == 2)
	{
		printf("%d", a / b);
	}
	return 0;
}

 如果输入的数据个数不是2,那么循环结束,同理也能用EOF文件结束标志来判断,scanf如果遇到了EOF(即你输入的是ctrl+z),返回的是-1,如果读取发生错误,就会返回0。

#include<stdio.h>
int main()
{
	int a,b;
	while (scanf("%d %d", &a, &b) !=EOF)
	{
		printf("%d", a / b);
	}
	return 0;
}

这里注意,在编译器输入Ctrl+z即可跳出while循环

由此来实现多组数据输入

4.scanf结束数据输入

scanf()函数接收输入数据时,遇以下情况结束一个数据的输入:

(1)遇空格、“回车”、“跳格”键;

(2)遇宽度结束;

(3)遇非法输入。

如果想输入一段带空格的字符串,我们可以用scanf("%[^\n]",str];来读取含空格的字符串或者直接用gets();函数也可以达到一样的效果,^可以理解为。 ^\n就表示非\n,即遇到非\n的字符就读入,即他可以读入直到你输入一个回车前的所有字符(包括空格)。所以scanf里面最好不要使用\n和空格。

  • 15
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值