加油!!!
前言
本文主要介绍
scanf()
函数的返回值以及用于多组输入的方式
1、scanf()函数简介
函数名: scanf
功 能: 格式化输入(读取数据),以空格和回车作为读取一次的结束标志
用 法:int scanf(char *format[,argument,...])
;
调用格式:scanf("<格式化字符串>",<地址表>)
;
返回值:如果读到了数据,返回的是实际读到的数据的个数,出错时则返回EOF
例如:scanf读取整形
int a = 0;
scanf("%d", &a);
scanf()函数是通用终端格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。可以读入任何固有类型的数据并自动把数值变换成适当的机内格式。
2、scanf()返回值详解
1:scanf读取数据,如果读到了数据,返回的是实际读到的数据的个数
2:如果没有读到数据,说明读取失败,返回的是EOF(-1)
3:EOF全称 end of file,表示-1
例如读取两个整形数字,代码如下:
int main()
{
int a = 0;
int b = 0;
int ret = scanf("%d %d", &a, &b);
printf("ret = %d\n", ret);
return 0;
}
我们使用ret
去记录scanf()
函数的返回值,由于是输入两个数,ret
的值应该为2,即使你输入3个数,返回值也是2。
代码执行结果如下:
3、scanf()用于多组输入
方法1:
int a = 0;
int b = 0;
while (scanf("%d %d", &a, &b) == 2)
{
//读取到2个数字,scanf返回的是2
}
方法2:
while (scanf("%d %d", &a, &b) != EOF)
{
//读取到2个数字,scanf返回的是2
//读取到1个数字,scanf返回的是1
}
方法3:
while (~scanf("%d %d", &a, &b))
{
//scanf读取失败的时候返回的是EOF,也就是-1
//-1的补码是
//11111111111111111111111111111111
//当对scanf的返回值~(按位取反的时候)得到的是0
//按位取反是全部二进制位都取反
}