当前位置: 首页 > news >正文

关于C:scanf()的一些注意事项

今天在理解输入的时候发现了一些有趣的事情。

我们知道scanf()在读取的时候会默认跳过空白符(制表符、空格、换行符)。

例1:

scanf("%d %d",&a,&b);

Input:5 3

Output:5 3

 

例2:

scanf("%d%d",&a,&b);

Input:5 3

Output:5 3

我们能够观察到仍然通过空格符将5和3分隔开。

 

一般来说%d,%lf这些都可以自动跳过。但是%c和普通字符(不是以%开头的)无法跳过。

例3:

scanf("%dXYZ%d",&a,&b);

Input:5 XYZ 3

这时候的输出5是成功匹配上了,但是3没有匹配上。这是因为在此处,空格与X匹配失败,导致后面的b也没有成功输入。

最核心的是:在 scanf 的格式字符串里,只要两个转换说明符(%d、%s、%c……)之间没有出现“非空白的普通字符”,scanf 就会自动在它们之间插入“跳过任意空白”的行为!

在此处%d的隔壁是XYZ,因此需要严格遵守格式。而在例2中,%d%d连在一起,会根据上述逻辑自动跳过字符串中的空白!

Input:5XYZ3

Output:5 3

这样就可以成功匹配了。

 

本质上,在scanf()的参数中,如果存在空白符(空格,\t,\n),就意味着跳过任意多个空白字符。

例4:

scanf("%d    \n\n\n \t%d",&a,&b);

Input:5 3

Output:5 3

 

最后给读者留两个小问题:

针对例3,当Input为"5XYZ  3"的时候,Output是什么?

那当参数为"%d  ,%d",Input为"12,13"的时候,Output是什么?

 

Nowasiki.

http://www.jsqmd.com/news/58673/

相关文章:

  • 快速上手PyTorch:强大高效的深度学习框架 - 详解
  • 指针与字符串、函数知识点详解
  • 飞牛关闭屏幕
  • leetcode49. 字母异位词分组
  • 2025年产品动画制作公司最新推荐,聚焦资质、案例、售后的实力品牌深度解析!
  • 2025年产品动画制作公司最新推荐,技术实力与市场口碑深度解析!
  • NOIPromax 被创飞忌
  • 把一个软件窗口部分内容置顶 的软件下载
  • Mac Note
  • GPIO及LED闪灯实验 - 实践
  • Day23(53)-F:\硕士阶段\Java\课程代码\后端\web-ai-code\web-ai-project02\aliyun-oss-spring-boot-autoconfigure
  • 从零打造云EMS
  • 哔哩哔哩野生API宝典:从入门到精通
  • RustFS:大模型时代的数据基石——千卡训练集群的存储解决方案
  • PbootCMS在阿里云主机上邮件发送失败:服务器已经禁用stream_socket_client和fsockopen函
  • uni-app构建安卓app时控制屏幕常亮不息屏
  • 第2篇Scrum冲刺博客
  • 文件分片上传/断点续传的进度管理与错误恢复
  • PbootCMS 指定栏目标签详解与应用场景
  • PbootCMS 独立手机版功能详解与配置步骤
  • 动态数组
  • Python基于PyTorch实现多输入多输出进行LSTM循环神经网络回归预测项目实战 - 实践
  • 轻松刷入OpenWrt:红米AC3000与小米CR8806/8808/8809实战教程
  • Solon AI 开发学习8 - chat - Vision(理解)图片、声音、视频
  • 安卓开发 Log 日志不显示在androidstudio里
  • Python全栈项目:基于Django的电子商务平台编写
  • 06.Servlet容器
  • PbootCMS留言发送到邮箱,邮件标题如何修改
  • 23、【Ubuntu】【远程编写】内网穿透:SSH 反向隧道
  • 【STM32】定时器、PWM - 教程