关于scanf函数(超详解)

1.scanf基础用法
        scanf函数在处理用户输入的原理是,用户出入的数据先放在缓存里面,等到按下回车键时,scanf函数才会按照占位符,对缓存的内容进行依次解读。解读用户输入的值时,scanf函数会从下一次遗留的字符开始解读直到解读完,或者知道遇到不符合占位符类型的字符。
        e.g.

#include<stdio.h>
int main()
{
    int a;
    double b;
    //如果我们直接输入3.14159
    scanf("%d",&a);
    //scanf函数会从3开始读取,显然 “.” 是不符合整形的
    scanf("%lf",&b);
    //再次调用scanf函数进行读取,会从上一次遗留的字符开始读取
    printf("%d %f",a,b);
    return 0;
}

        第一个scanf函数进行调用,首先从3开始向后读取,但显然“ . ”是不符合int整形数据的,故而读取将会在此停止。故a只会存放3。
        第二个scanf函数,再次调用函数,函数的读取将会从上一个所遗留的字符开始读取即从“ .  ”字符开始读取。故b中会存放0. 14159。
        当然scanf函数是可以处理多个占位符的,故而上面的例子有可以写成这样

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

2.scanf的返回指
        scanf函数的返回值是一个整数,表示成功读取的变量个数
        成功读取几个,就返回几。如果没有读取到任何变量,则返回0。如果在成功读取到任何变量之前就发生错误或者到了文件末尾,则返回EOF(即:-1)

#include<stdio.h>
int main()
{
    int a,b,c;
    int x=scanf("%d %d %d",&a,&b,&c);
    printf("%d",x);
//当我们输出3个值时,scanf成功读取3个数,返回值为3
    return 0;
}

3.占位符
        在scanf函数中的占位符我强调到两个(%c  %s)。关于%c,是唯一一个不会忽略起手的空白字符,但是如果要强制忽略的话%c 前加上一个空格,表示跳过零个或多个空白字符,如下操作

scanf(" %c",&a);

        关于%s,%s输出的并不是简简单单的字符串,%s是不会输出空白字符的,故意味着我们无法通过一个%s来输入多个单词等等。我们只能通过多个%s来实现

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值