自学嵌入式第四天(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); 会出现输入结束不了 的情况原因:格式控制字符串中如果出现了空白符则表示 匹配任意多个空白符

相关新闻

免费实时屏幕翻译神器:Translumo让你的外语游戏和视频瞬间变母语

免费实时屏幕翻译神器:Translumo让你的外语游戏和视频瞬间变母语

免费实时屏幕翻译神器:Translumo让你的外语游戏和视频瞬间变母语 【免费下载链接】Translumo Advanced real-time screen translator for games, hardcoded subtitles in videos, static text and etc. 项目地址: https://gitcode.com/gh_mirrors/tr/Translumo …

2026/7/19 5:51:43阅读更多 →
仓库优先架构:让AI从天气预报升级为实时决策中枢

仓库优先架构:让AI从天气预报升级为实时决策中枢

1. 项目概述:当CRM里的AI模型准确率高达92%,为什么销售线索转化率反而跌了17%?我去年在给一家年营收4.2亿的SaaS企业做数据架构升级时,亲眼见过这样一幕:他们的新上线的AI客户流失预警模型,在离线测试中AUC…

2026/7/19 5:51:43阅读更多 →
2026年沈阳市景观灯厂TOP5排名,哪家性价比更高?

2026年沈阳市景观灯厂TOP5排名,哪家性价比更高?

2026年沈阳市景观灯厂TOP5排名,哪家性价比更高?行业痛点分析在当前的城市化进程中,景观灯不仅美化了城市夜景,还提升了城市的整体形象。然而,据数据显示,市场上许多景观灯存在能耗高、寿命短、维护成本高的…

2026/7/19 5:51:43阅读更多 →
STM32电机闭环控制:PID算法与硬件设计实战

STM32电机闭环控制:PID算法与硬件设计实战

1. STM32电机闭环控制的核心价值与工程挑战电机闭环控制是嵌入式系统开发中最具挑战性的任务之一。想象一下,当你按下遥控器让无人机起飞时,电机需要瞬间从静止加速到每分钟上万转,同时还要抵抗风力扰动、电池电压波动等各种干扰。开环控制就…

2026/7/19 9:48:08阅读更多 →
360AI搜索效率翻倍的7个隐藏指令:90%用户至今未启用的官方API级技巧

360AI搜索效率翻倍的7个隐藏指令:90%用户至今未启用的官方API级技巧

更多请点击: https://intelliparadigm.com 第一章:360AI搜索的核心架构与指令机制概览 360AI搜索并非传统关键词匹配引擎的简单升级,而是一个融合多模态理解、实时知识蒸馏与用户意图动态建模的智能检索系统。其核心架构采用分层协同设计&am…

2026/7/19 9:48:08阅读更多 →
UBOOT启动第二阶段核心任务与S5PV210开发实践

UBOOT启动第二阶段核心任务与S5PV210开发实践

1. UBOOT启动第二阶段的核心任务解析在S5PV210开发板上,UBOOT的启动过程分为两个关键阶段。当CPU完成第一阶段的硬件初始化后,代码执行流程会跳转到第二阶段入口start_armboot()函数(通常位于lib_arm/board.c)。这个阶段承担着以下…

2026/7/19 9:48:08阅读更多 →
向打工搬砖人致敬!

向打工搬砖人致敬!

向打工搬砖人致敬 996是打工人的归宿。 <!DOCTYPE html> <html><head><meta charset"utf-8" /><meta name"viewport" content"widthdevice-width, initial-scale1" /><title>每日搬砖倒计时</title>&…

2026/7/19 9:48:08阅读更多 →
3分钟快速上手:如何用Python一键下载Gofile文件?

3分钟快速上手:如何用Python一键下载Gofile文件?

3分钟快速上手&#xff1a;如何用Python一键下载Gofile文件&#xff1f; 【免费下载链接】gofile-downloader Download files from https://gofile.io 项目地址: https://gitcode.com/gh_mirrors/go/gofile-downloader 你是否曾经为了从Gofile.io下载文件而反复点击网页…

2026/7/19 9:48:08阅读更多 →
Vert.x高性能异步框架重构网盘直链解析服务:突破传统下载瓶颈的架构革新

Vert.x高性能异步框架重构网盘直链解析服务:突破传统下载瓶颈的架构革新

Vert.x高性能异步框架重构网盘直链解析服务&#xff1a;突破传统下载瓶颈的架构革新 【免费下载链接】netdisk-fast-download 聚合多种主流网盘的直链解析下载服务, 一键解析下载&#xff0c;已支持夸克网盘/uc网盘/蓝奏云/蓝奏优享/小飞机盘/123云盘等. 支持文件夹分享解析. 体…

2026/7/19 9:46:08阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中&#xff0c;我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源&#xff0c;还是配置文件、证书等&#xff0c;都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下&#xff0c;但这…

2026/7/19 0:01:04阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP&#xff08;轻量级目录访问协议&#xff09;作为企业级身份认证的黄金标准&#xff0c;已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时&#xff0c;发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/19 0:01:04阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”&#xff0c;而是以可解释、可审计、可迭代的方式&#xff0c;赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/19 0:01:04阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中&#xff0c;我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源&#xff0c;还是配置文件、证书等&#xff0c;都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下&#xff0c;但这…

2026/7/19 0:01:04阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP&#xff08;轻量级目录访问协议&#xff09;作为企业级身份认证的黄金标准&#xff0c;已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时&#xff0c;发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/19 0:01:04阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”&#xff0c;而是以可解释、可审计、可迭代的方式&#xff0c;赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/19 0:01:04阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时&#xff0c;发现推理速度只有可怜的 1-2 FPS&#xff0c;而别人的演示视频却能跑到 30 FPS 以上&#xff0c;那么问题很可能不在模型本身&#xff0c;而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后&#xff0c;会直接使用官方示例…

2026/7/18 22:49:46阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一&#xff1a;为什么你需要了解 Coze 和 Dify&#xff1f;如果你对 AI 应用开发感兴趣&#xff0c;但一看到“大模型”、“智能体”、“工作流”这些词就头疼&#xff0c;觉得门槛太高&#xff0c;那这篇文章就是为你准备的。很多开发者&#xff0c;包括我自己&#…

2026/7/18 14:49:24阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会&#xff1a;配图一直是个让人头疼的问题。2026年&#xff0c;AI生图工具已经非常成熟了&#xff0c;但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1&#xff1a;速度之王2026年6月11日&#xff0c…

2026/7/18 18:49:35阅读更多 →