自学嵌入式第四天(C语言篇——输入输出)

发布时间:2026/9/12 5:21:17

自学嵌入式第四天(C语言篇——输入输出) 一、语句完成一定任务的代码1.控制语句2.函数调用语句3.表达式语句4.空语句5.复合语句二、输入输出1.软件、内存、CPU的关系1软件静态存放在硬盘 / 闪存里的静态文件.exe、.c编译后的程序、文档等只有代码、数据没有运行状态CPU 无法直接读取硬盘数据。2内存RAM临时高速存储高速临时存储空间断电数据丢失是 CPU 唯一能直接高速读写的存储介质CPU 不能直接访问硬盘所有要执行的代码、要处理的数据必须先加载到内存。3CPU运算控制器计算机的计算核心只做两件事读取指令、运算数据从内存取指令执行运算时数据会先缓存到 CPU 内部寄存器 / 高速缓存再回写内存。4关系双击硬盘中存放的静态软件程序后操作系统会将软件文件拆分为代码段、全局数据与常量为其分配内存空间并将这些内容拷贝至内存同时在内存中创建栈、堆区域分别存储局部变量和动态申请的数据内存中这套完整可运行的实例即为进程至此软件正式开始运行随后CPU依靠程序计数器PC定位内存中下一条待执行指令将指令读取至内部缓存完成解析再从内存加载运算数据到CPU寄存器完成各类计算与逻辑判断并把运算结果写回内存的栈、堆或全局数据区循环往复执行指令维持程序运行以键盘输入为例的输入流程则是键盘外设产生电信号后由主板IO控制器捕获触发硬件中断让CPU暂停当前运算读取外设传来的字符或数字再由CPU将数据写入程序提前在内存开辟好的缓冲区数组、变量后续程序再从内存缓冲区读取数据进行处理由此可见输入数据最终会存入内存但外设无法直接写入内存全过程必须经过CPU中转。2.单字符输入输出函数1man手册NAME(名字): 函数名及功能简短说明SYNOPSIS摘要: 函数需要的头文件 以及 函数原型DESCRIPTION描述: 描述 函数的使用细节RETURN VALUE返回值: 返回值2int getchar (void)功能从标准输入获得一个字符参数void 空类型不需要参数返回值返回读到的字符的编码值3int putchar (int c)功能将字符c输出到屏幕上参数c 要输出的字符返回值返回输出的字符ASCII编码值3.格式化输入输出函数1int printf (const char *format, ....)功能格式化输出参数format --- 格式化字符串即有指定格式的一个字符串... --- 可变参数 数量可变返回值成功时返回打印了的字符数量格式化字符普通字符原样输出占位符需要把对应的数据转换为指定的占位符格式a.整型数据此处均为int型%d 表示 将数据 转换为 有符号十进制形式%u 表示 将数据 转换为 无符号十进制形式%o 表示 将数据 转换为 八进制形式%x 表示 将数据 转换为 十六进制形式%X 表示 将数据 转换为 十六进制形式 ,结果中的字母都转换为大写形式b.浮点型数据%f 表示 将数据 转换为 十进制形式的小数 结果默认保留6位小数%e 表示 将数据 转换为 科学计数法形式的小数 结果默认保留6位小数%g 以一种更简洁的方式输出 结果不会有无意义的0c.字符型数据%c 表示 将数据 转化为 对应的 字符形式%s 字符串 --- 将数据转换为一串(多个字符)%d 占位符的% 和 d等符号之间 可以添加[辅助控制符]辅助控制符a.#表示数据对应的前缀字符 %#x十六进制 %#o八进制b.m表示指定数据数据的宽度 %md 其中m是个整数当m 实际数据的宽度默认右对齐左边补空格也可以左对齐m前面加 -(减号)也可以补 0 m前面加 0当m 实际数据的宽度以实际宽度输出c. .n其中n 也是整数.n 用在浮点数输出时%nf 和 %ne表示保留n位小数%ng 表示保留结果前n位.n 用在字符串时%ns 表示保留结果前n位d.%ld 当输出类型不是int类型时l 在整型占位符中表示 转换 long类型ll 在整型占位符中表示 转换 long long类型 一个大写L表示L 在整型占位符中表示 转换 long long类型在浮点型占位符中表示 转换 long double类型%% 最终会输出一个 %注意占位符和输出参数一一对应2int scanf (const char *format, ....)功能: 格式化输入函数参数: format --- 格式化字符串即有指定格式的一个字符串... --- 可变参数 --- 需要的时地址列表返回值:表示成功匹配到的数据项scanf的格式化字符与printf的类似再次主要说明不同点。在输入中不存在#和限制输入精度这两种说法注意a.scanf的格式控制字符串可以输入普通字符但是一般不建议用b.scanf多个数据时默认以空白符空格回车tab作为分隔符c.地址列表的地方需要的是地址普通变量就需要 如果填写的是非地址则将出现Segmentation fault (core dumped)(段错误) 报错即内存段错误本质是程序尝试读写一块无访问权限、不受当前进程管控的内存空间。计算机中 0号地址一般不能直接访问因为操作系统自身需要长期占用一定的内存空间(一般都放在低地址处0~1G)d.scanf的占位符和地址参数 也要做到一一对应e.scanf匹配结束条件遇到空白符 遇到非法字符达到指定宽度f.注意:scanf输入时占位符和类型要严格匹配g.scanf处理字符型数据时需要注意%c 因为空白符也是字符数据会出现此种输出第一行为输入第二行为输出在a读取到123遇到空格后停止读取b会读到一个空格符而c读到A属于非法字符也会直接停止。那么连续输入又有%c那么如何处理空白符①scanf(%d %c%f,a,b,c); 通过空白符可以跳过输入的空白符②scanf(%d%*c%c%f,a,b,c); %*c表示跳过要给数据项③scanf(%d,a);getchar();scanf(%c,b);scanf(%f,c);通过getchar吃掉空格h.注意 scanf最后不要写 \n例如 scanf(%u\n,a); 会出现输入结束不了 的情况原因:格式控制字符串中如果出现了空白符则表示 匹配任意多个空白符
延伸阅读

更多相关文章

2026/9/10 11:44:25

Unity与VS2013/2015调试集成:原理、配置与实战排错指南

1. 项目概述:为什么Unity开发者需要关注VS版本与调试工具作为一名在Unity和Visual Studio(VS)生态里摸爬滚打了多年的老程序员,我见过太多因为开发环境配置不当而导致的“玄学”问题。一个最常见,也最容易被忽视的环节…

2026/9/10 0:10:38

嵌入式单线通信协议HDQ与1-Wire原理、驱动实现与调试实战

1. 项目概述:单线通信协议在嵌入式系统中的核心价值在嵌入式系统开发中,我们常常面临一个经典矛盾:功能日益复杂,但硬件资源(尤其是宝贵的GPIO引脚)却极其有限。尤其是在电池供电的便携设备、微型传感器节点…

2026/9/12 5:19:52

图片转PDF合并工具:高效解决文档数字化痛点

1. 项目概述:图片转PDF合并工具的核心价值 这个工具解决了纸质文档数字化过程中的三大痛点:多页扫描件分散存储、图片格式不便于归档、不同来源文件难以统一管理。我在处理合同资料时深有体会——每次用扫描仪生成几十张JPG后,手动合并成PDF要…

2026/9/12 5:19:52

团子翻译器:三步轻松搞定游戏生肉翻译的终极方案

团子翻译器:三步轻松搞定游戏生肉翻译的终极方案 还在为看不懂的外语游戏、漫画、视频而烦恼吗?团子翻译器正是为你量身打造的实时生肉翻译神器!这款基于OCR技术的专业翻译软件能够智能识别屏幕文字并实时翻译,让你彻底告别语言障…

2026/9/12 5:19:52

ADHD成人实操手册:执行功能微操作系统

1. 项目概述:这不是一个诊断标签,而是一份自我觉察的操作手册“i-have-adhd”——短短五个单词,没有标点,没有大写,像一句深夜发在社交平台的轻声自白,又像一份来不及整理的草稿。它不是医学报告&#xff0…

2026/9/12 5:19:51

大模型提示词工程实战:核心原理与调优全攻略

把一个大模型部署好、微调好,只算完成了前半段工作。真正让模型在日常业务里稳定输出价值的,往往是最后那一层很不起眼的“指令设计”。我见过太多项目,模型选型、算力、微调都做了,结果一问业务问题,回答还是“能用但…

2026/9/12 5:14:51

Rust嵌入式实时执行:从ZeroClaw看代码到硬件的全链路控制

1. 项目概述:从“代码执行”切入ZeroClaw的运行本质 ZeroClaw不是一段跑起来就完事的Demo程序,它是一套面向具身智能硬件(尤其是OpenClaw平台)设计的、以Rust语言构建的实时控制中枢。当标题里写着“代码执行”,它指的…

2026/9/12 2:05:33

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/12 3:55:12

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/9 16:31:09

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/12 0:04:17

MATLAB仿生优化框架:长鼻浣熊算法多策略融合实现

简介:本资源是一份面向智能优化算法研究者与MATLAB初学者的仿生智能算法实践代码包,聚焦于长鼻浣熊优化算法(COA)的多策略改进与性能验证。针对传统COA易陷局部最优、收敛精度不足等问题,作者融合Circle映射初始化提升…

2026/9/12 0:04:17

【JAVA毕设源码分享】基于 JavaWeb 的校园一卡通管理系统的设计与实现 基于 JavaWeb 的校园卡业务管理系统(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/9/12 0:04:17

【JAVA毕设源码分享】基于 Java 的图书馆借阅管理平台的搭建与实现 基于 Java 的图书馆综合管理系统(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/9/10 12:32:02

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/10 15:19:50

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/10 15:49:53

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码