首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >关于scanf函数(超详解)

关于scanf函数(超详解)

作者头像
Yuzuriha
发布2026-01-14 15:45:52
发布2026-01-14 15:45:52
720
举报
文章被收录于专栏:Linux网络Linux网络
1.scanf基础用法         scanf函数在处理用户输入的原理是,用户出入的数据先放在缓存里面,等到按下回车键时,scanf函数才会按照占位符,对缓存的内容进行依次解读。解读用户输入的值时,scanf函数会从下一次遗留的字符开始解读直到解读完,或者知道遇到不符合占位符类型的字符。         e.g.

代码语言:javascript
复制
#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函数是可以处理多个占位符的,故而上面的例子有可以写成这样
代码语言:javascript
复制
#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)
代码语言:javascript
复制
#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 前加上一个空格,表示跳过零个或多个空白字符,如下操作
代码语言:javascript
复制
scanf(" %c",&a);
        关于%s,%s输出的并不是简简单单的字符串,%s是不会输出空白字符的,故意味着我们无法通过一个%s来输入多个单词等等。我们只能通过多个%s来实现
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-03-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.scanf基础用法         scanf函数在处理用户输入的原理是,用户出入的数据先放在缓存里面,等到按下回车键时,scanf函数才会按照占位符,对缓存的内容进行依次解读。解读用户输入的值时,scanf函数会从下一次遗留的字符开始解读直到解读完,或者知道遇到不符合占位符类型的字符。         e.g.
  •         第一个scanf函数进行调用,首先从3开始向后读取,但显然“ . ”是不符合int整形数据的,故而读取将会在此停止。故a只会存放3。         第二个scanf函数,再次调用函数,函数的读取将会从上一个所遗留的字符开始读取即从“ .  ”字符开始读取。故b中会存放0. 14159。         当然scanf函数是可以处理多个占位符的,故而上面的例子有可以写成这样
  • 2.scanf的返回指         scanf函数的返回值是一个整数,表示成功读取的变量个数。         成功读取几个,就返回几。如果没有读取到任何变量,则返回0。如果在成功读取到任何变量之前就发生错误或者到了文件末尾,则返回EOF(即:-1)
  • 3.占位符         在scanf函数中的占位符我强调到两个(%c  %s)。关于%c,是唯一一个不会忽略起手的空白字符,但是如果要强制忽略的话%c 前加上一个空格,表示跳过零个或多个空白字符,如下操作
  •         关于%s,%s输出的并不是简简单单的字符串,%s是不会输出空白字符的,故意味着我们无法通过一个%s来输入多个单词等等。我们只能通过多个%s来实现
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档