news 2026/6/19 18:44:36

scanf函数详细介绍,避免各种误区

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
scanf函数详细介绍,避免各种误区

1、什么是scanf函数

scanf是 C 语言中的一个输入函数,用于从标准输入(通常是键盘)读取格式化输入。它与printf函数类似,都声明在头文件stdio.h中。scanf函数的基本功能是根据指定的格式从键盘输入数据并存储到相应的变量中。

2、scanf的返回值

scanf() 的返回值是⼀个整数,表⽰成功读取的变量个数。

如果没有读取任何项,或者匹配失败,则返回 0 。

如果在成功读取任何数据之前,发⽣了读取错误或者遇到读取到⽂件结尾,则返回常量 EOF 。

3、scanf函数原型

int scanf(const char *format, ...);

format:这是一个 C 字符串,包含格式说明符,用于指定输入的数据类型和格式。

...:可变参数列表,包含一个或多个指向变量的指针,用于存储输入的数据。

4、格式说明

格式说明符

scanf函数支持多种格式说明符,用于指定不同类型的数据输入。常见的格式说明符包括:

%d:读取十进制整数。

%f:读取浮点数。

%c:读取单个字符。

%s:读取字符串,遇到空白字符(如空格、换行符)结束。

%x:读取十六进制整数。

%u:读取无符号十进制整数。

%p:读取指针。

%lfdouble类型浮点数。
%Lflong double类型浮点数。
%[]:在⽅括号中指定⼀组匹配的字符(⽐如%[0-9] )遇到不在集合之中的字符,匹配将会
停⽌。

4.1注意事项

1. 上面所有占位符之中,除了%c以外,都会自动忽略起首的空白字符。%c不忽略空白字符,总是返回当前第⼀个字符,无论该字符是否为空格。
2. 如果要强制跳过字符前的空白字符,可以写成 scanf(" %c", &ch),即%c前加上⼀个空格,表示跳过零个或多个空白字符。
3.占位符%s,它其实不能简单地等同于字符串。
它的规则是,从当前第⼀个非空白字符开始读起,直到遇到空白字符(即空格、换行符、制表符等)为止。
因为%s不会包含空白字符,所以无法用来读取多个单词,除非多个%s ⼀起使用。
另外,scanf()遇到%s占位符,会在字符串变量末尾存储⼀个空字符 \0

5、scanf使用示例

5.1注意事项

1.变量地址:在scanf中,必须传递变量的地址。例如,scanf("%d", &a);而不是scanf("%d", a);

2.格式匹配:输入的数据类型必须与格式说明符匹配,否则会导致读取错误。例如,使用%d读取整数,使用%f读取浮点数。

3.空白字符scanf会跳过输入中的空白字符(如空格、制表符和换行符),直到遇到非空白字符为止。

4.缓冲区问题:在读取字符或字符串时,可能会遇到缓冲区残留信息的问题,可以使用getchar()fflush(stdin)清空缓冲区。

6、赋值忽略符

6.1面临的问题

有时,输入的格式可能不符合预定的格式。

如果输⼊2020-01-01,就会正确解读出年、月、日。问题是可能输入其他
格式,比如2020/01/01,这种情况下,scanf()解析数据就会失败。

6.2 解决方法

为了避免这种情况,scanf()提供了⼀个赋值忽略符(assignment suppression character)*
只要把*加在任何占位符的百分号后⾯,该占位符就不会返回值,解析后将被丢弃。
上面示例中,%*c就是在占位符的百分号后面,加入了赋值忽略符*,表示这个占位符没有对应的变量,解读后不必返回。
结语:感谢我们自己始终朝着梦想的方向努力。
点点赞支持一下!也激励一下努力的自己!
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/19 9:49:07

TranslucentTB中文界面终极指南:从诊断到完美配置

TranslucentTB中文界面终极指南:从诊断到完美配置 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 还在为TranslucentTB显示英…

作者头像 李华
网站建设 2026/6/20 11:07:19

UnrealPakViewer实战指南:解密UE4 Pak文件的五大核心技巧

还在为UE4 Pak文件的黑盒操作而头疼吗?UnrealPakViewer作为一款专门针对虚幻引擎4开发的Pak文件查看工具,能够帮你轻松透视Pak文件内部结构,优化资源管理效率。今天我们就来聊聊如何用这款工具解决实际开发中的常见问题! 【免费下…

作者头像 李华
网站建设 2026/6/19 22:22:16

漏洞扫描AWVS安装使用教程,三分钟手把手教会!

一、AWS简介 Acunetix Web Vulnerability Scanner(简称AWVS)是一个自动化的Web漏洞扫描工具,它可以扫描任何通过Web浏览器访问和遵循HITP/HTTPS规则的Web站点。 AWVS原理是基于漏洞匹配方法,通过网络爬虫测试你的网站安全,检测流行安全 AWVS…

作者头像 李华
网站建设 2026/6/20 13:56:56

绝区零自动化工具全功能实战指南

绝区零自动化工具全功能实战指南 【免费下载链接】ZenlessZoneZero-OneDragon 绝区零 一条龙 | 全自动 | 自动闪避 | 自动每日 | 自动空洞 | 支持手柄 项目地址: https://gitcode.com/gh_mirrors/ze/ZenlessZoneZero-OneDragon 绝区零自动化工具是一款专为《绝区零》玩家…

作者头像 李华
网站建设 2026/6/20 1:20:27

5分钟掌握Android投屏实用技巧:QtScrcpy全新体验全解析

还在为手机屏幕太小而烦恼?还在寻找高效的跨设备控制方案?QtScrcpy的出现彻底改变了传统投屏方式,这款基于Qt框架开发的Android投屏工具,通过创新的技术架构和丰富的功能特性,为用户带来了前所未有的投屏体验。 【免费…

作者头像 李华
网站建设 2026/6/19 15:45:45

Lumafly模组管理器:空洞骑士玩家的完整解决方案

Lumafly模组管理器:空洞骑士玩家的完整解决方案 【免费下载链接】Lumafly A cross platform mod manager for Hollow Knight written in Avalonia. 项目地址: https://gitcode.com/gh_mirrors/lu/Lumafly Lumafly是一款专为《空洞骑士》设计的跨平台模组管理…

作者头像 李华