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

详解格式化输入函数scanf

大家好,今天给大家介绍详解格式化输入函数scanf,文章末尾附有分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!可进群免费领取。

C语言中常用的输入可以有多种方式,如scanf(),getchar(),gets()。

它们的功能都类似(获取键盘输入的数据),但scanf()因功能使用、函数简单,而深受编程者喜爱。

scanf()函数功能: 执行格式化输入(用户可以按照指定格式输入数据)

scanf()函数原型: int scanf(char *format[,argument,...]);

scanf()从标准输入设备(通常指键盘) 读取输入的信息,并将读入任何固有类型的数据自动变换成适当的机内格式。其格式为: scanf("<格式化字符串>",<地址表>);scanf()函数返回成功赋值的数据项数,出错时则返回EOF。

例如以下程序

int mian(void)

{

int a;

scanf(“%d”,&a);

return 0;

}

当程序运行到scanf(“%d”,&a)时会阻塞,等待键盘输入。如果我们在键盘上按下“5”、“7”然后回车了,那么“5”、“7”、回车键“\n”都被逐一放入缓冲区里,又由于回车键是特殊的字符(可实现清除行缓冲),它先将字符'\n'添加到缓冲区,随后便清除缓冲区 ,将其中的所有字符发送到一个叫做输入列表的地方 ,scanf函数以及其他标准输入函数便会立刻从输入列表中获取内容。

上述程序按照%d的规则从输入列表中获取字符 ,它获取了'5'、'7',并且将其转变为整数57,存入了变量a中。

如果我们将程序改为以下形式,

int mian(void)

{

char a[10];

scanf(“%s”,a);

return 0;

}

如果我们还是在键盘上按下“5”、“7”然后回车了,那么“5”、“7”、回车键“\n”还是一样被逐一放入缓冲区里;又由于回车键是特殊的字符(可实现清除行缓冲),它先将字符'\n'添加到缓冲区,随后便清除缓冲区 ,将其中的所有字符发送到一个叫做输入列表的地方 ,scanf函数以及其他标准输入函数便会立刻从输入列表中获取内容。

程序按照%s的规则从输入列表中获取字符 ,它获取了'5'、'7',并且将其转变为字符串“57”,存入了变量a中。

总之,我们输入的数据及缓冲中的数据都是一致的,只不过scanf函数根据不同的格式进行了不同的转换而已(省去了程序员自己转换数据的麻烦)。

嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!

无偿分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!某鱼上买估计至少要好几十。

(点击找小助理领取)

扫码进群领资料icon-default.png?t=N7T8https://ad.pdb2.com/l/16QijNiGb32IFIn

相关文章:

  • 虚拟飞控计算机:飞行控制系统验证与优化的利器
  • 微服务OAuth 2.1扩展额外信息到JWT并解析(Spring Security 6)
  • 【数据分享】1929-2023年全球站点的逐日平均能见度(Shp\Excel\免费获取)
  • Python 小白的 Leetcode Daily Challenge 刷题计划 - 20240209(除夕)
  • Leecode之环形链表进阶
  • 设计模式-行为型模式(下)
  • 【SpringBoot】Redis集中管理Session和自定义用户参数解决登录状态及校验问题
  • 工厂方法模式(Factory Method Pattern)
  • Qt 数据库操作V1.0
  • 2.6日学习打卡----初学RabbitMQ(一)
  • Python进阶:标准库
  • Qt未来市场洞察
  • 基于YOLOv8算法的照片角度分类项目实践
  • 单片机学习笔记---蜂鸣器工作原理
  • 发送get请求并且发送请求头(header),java实现
  • macbook电脑如何永久删除app软件?
  • 开发JSP应用程序
  • Unity3d Shader篇(五)— Phong片元高光反射着色器
  • 【回溯算法】 LCR 081. 组合总和
  • android 音频调试技巧
  • 单阶段遭遇零封偶像奥沙利文,赵心童要让丁俊晖预言成真
  • 徐丹任武汉大学药学院院长:研究领域在国际上处领跑地位
  • 从“土”到“潮”,唢呐何以“圈粉”年轻人
  • 三大上市猪企:前瞻应对饲料原材料价格波动
  • 杨轶群任莆田市荔城区人民政府副区长
  • 马上评|扩大高速免费救援范围,打消出行后顾之忧