嵌入式Linux:格式化I/O
目录
1、格式化输出函数
1.1、printf()函数
1.2、fprintf()函数
1.3、dprintf()函数
1.4、sprintf()函数
1.5、snprintf()函数
2、格式化输入函数
2.1、scanf()函数
2.2、fscanf()函数
2.3、sscanf()函数
在Linux中,格式化I/O(formatted I/O)指的是通过格式化输入输出函数对数据进行读写,这些函数允许你以特定的格式读写数据。
拓展:Linux实现标准输入和标准输出(STDIN_FILENO和STDOUT_FILENO)
1、格式化输出函数
C 库函数提供了 5 个格式化输出函数,包括:printf()、fprintf()、dprintf()、sprintf()、snprintf()。
1.1、printf()函数
原型:int printf(const char *format, ...);
功能:将格式化的字符串输出到标准输出(通常是终端)。
返回值:返回写入的字符数(不包括终止的空字符),如果出错则返回负值。
示例:
#include <stdio.h>int main() {int age = 30;printf("Age: %d\n", age);return 0;
}
1.2、fprintf()函数
原型:int fprintf(FILE *stream, const char *format, ...);
功能:将格式化的字符串输出到指定的文件流。
返回值:返回写入的字符数(不包括终止的空字符),如果出错则返回负值。
示例:
#include <stdio.h>int main() {FILE *file = fopen("output.txt", "w");if (file != NULL) {fprintf(file, "Hello, file!\n");fclose(file);} else {perror("Failed to open file");}return 0;
}
1.3、dprintf()函数
原型:int dprintf(int fd, const char *format, ...);
功能:将格式化的字符串输出到指定的文件描述符。
返回值:返回写入的字符数(不包括终止的空字符),如果出错则返回负值。
示例:
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>int main() {int fd = open("output.txt", O_WRONLY | O_CREAT | O_TRUNC, 0644);if (fd != -1) {dprintf(fd, "Hello, dprintf!\n");close(fd);} else {perror("Failed to open file");}return 0;
}
1.4、sprintf()函数
原型:int sprintf(char *str, const char *format, ...);
功能:将格式化的字符串输出到字符串缓冲区。
返回值:返回写入的字符数(不包括终止的空字符),如果出错则返回负值。
示例:
#include <stdio.h>int main() {char buffer[100];int age = 30;sprintf(buffer, "Age: %d", age);printf("%s\n", buffer);return 0;
}
1.5、snprintf()函数
原型:int snprintf(char *str, size_t size, const char *format, ...);
功能:将格式化的字符串输出到字符串缓冲区,最多写入size个字符。
返回值:返回要写入的字符数,如果返回值大于等于size,则表示输出被截断。
示例:
#include <stdio.h>int main() {char buffer[10];int age = 30;snprintf(buffer, sizeof(buffer), "Age: %d", age);printf("%s\n", buffer);return 0;
}
2、格式化输入函数
C 库函数提供了 3 个格式化输入函数,包括:scanf()、fscanf()、sscanf()。
2.1、scanf()函数
原型:int scanf(const char *format, ...);
功能:从标准输入读取格式化数据。
返回值:成功匹配和赋值的输入项数,如果遇到错误或到达文件末尾,则返回负值。
示例:
#include <stdio.h>int main() {int age;printf("Enter your age: ");scanf("%d", &age);printf("You entered: %d\n", age);return 0;
}
2.2、fscanf()函数
原型:int fscanf(FILE *stream, const char *format, ...);
功能:从指定的文件流读取格式化数据。
返回值:成功匹配和赋值的输入项数,如果遇到错误或到达文件末尾,则返回负值。
示例:
#include <stdio.h>int main() {FILE *file = fopen("input.txt", "r");if (file != NULL) {int age;fscanf(file, "%d", &age);printf("Age from file: %d\n", age);fclose(file);} else {perror("Failed to open file");}return 0;
}
2.3、sscanf()函数
原型:int sscanf(const char *str, const char *format, ...);
功能:从字符串缓冲区读取格式化数据。
返回值:成功匹配和赋值的输入项数,如果遇到错误或到达字符串末尾,则返回负值。
示例:
#include <stdio.h>int main() {const char *input = "30";int age;sscanf(input, "%d", &age);printf("Age from string: %d\n", age);return 0;
}
这些格式化输入输出函数提供了丰富的功能,便于处理各种类型的数据输入输出需求。
使用这些函数时需要特别注意格式化字符串的正确性和缓冲区的大小,以避免缓冲区溢出和其他潜在问题。
相关文章:
嵌入式Linux:格式化I/O
目录 1、格式化输出函数 1.1、printf()函数 1.2、fprintf()函数 1.3、dprintf()函数 1.4、sprintf()函数 1.5、snprintf()函数 2、格式化输入函数 2.1、scanf()函数 2.2、fscanf()函数 2.3、sscanf()函数 在Linux中,格式化I/O(formatted I/O&a…...
【elementui源码解析】如何实现自动渲染md文档-第二篇
目录 1.概要 2.引用文件 1)components.json 2)json-template/string 3)os.EOL 3.变量定义 4.模版填充 5.MAIN_TEMPLATE填充 6.src下的index.js文件 1)install 2)export 7.总结 1.概要 今天看第二个命令no…...
热门开源项目OpenHarmony
目录 1.概述 1.1.开源项目的意义 1.2.开源项目对软件行业的促进作用 1.3.小结 2.OpenHarmony 2.1.技术架构 2.2.分布式软总线 2.2.1.架构 2.2.2.代码介绍 2.2.2.1.代码目录 2.2.2.2.说明 2.2.2.3.发现组网和传输 2.2.2.3.1.发现 2.2.2.3.2.组网 2.2.2.3.3.传输…...
NewspaceAi之GPT使用新体验
GPT功能 使用地址:https://newspace.ai0.cn/ 上车 挂挡 踩油门,一脚到底,开始你的表演 问题1:你能做什么详细告诉我? 下面内容是GPT的回答 当然!作为一个基于GPT-4架构的AI,我能够在许多方面为…...
详解红黑树
红黑树规则 节点是红色或黑色。根节点是黑色。每个叶子节点都是黑色的空节点(NIL节点)。每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。 红黑树…...
探索JavaScript逆向工程与风控等级
探索JavaScript逆向工程与风控等级 在当今的网络安全领域,JavaScript逆向工程(简称JS逆向)已成为许多开发者和安全专家关注的焦点。JS逆向主要涉及对JavaScript代码的分析与理解,以发现其内部逻辑、数据流及潜在漏洞。这种技术常用…...
C++ 22 之 立方体案例
c22立方体案例.cpp #include <iostream> #include <string>using namespace std;class Cube{ private:int cube_l; // 长int cube_w; // 宽int cube_h; // 高public:// 设置长void set_l(int l){cube_l 1;}// 设置宽void set_w(int w){cube_w w;}// 设置高void …...
vue2使用antv/g6-editor实现可拖拽流程图
依赖下载 照着这个引入就好,然后npm install 源码 <template><div id"vue-g6-editor"><el-row><el-col :span"24"></el-col></el-row><!-- 工具栏 --><el-row><el-col :span"24&qu…...
springboot学习小结
背景 业务上需要开发,组里一位前辈给我指路 spring基础 什么是spring spring提供一个容器称为spring应用上下文,容器里可以创建和管理组件,组件会在容器里装配好,组件也可以叫bean。 装配不由组件创建他依赖的组件࿰…...
vue聊天发送Emoji表情
在用web端写聊天发送表情的功能中,使用web端有系统自带的unicode表情会出现每端不统一的情况,不好用不能统一,在这里我想到了一个非常好的思路,可以解决这个问题! 那就是发送表情用图片的形式呈现,然后发给…...
360数字安全:2024年4月勒索软件流行态势分析报告
勒索软件传播至今,360 反勒索服务已累计接收到数万勒索软件感染求助。随着新型勒索软件的快速蔓延,企业数据泄露风险不断上升,勒索金额在数百万到近亿美元的勒索案件不断出现。勒索软件给企业和个人带来的影响范围越来越广,危害性…...
【MySQL】日志详解
本文使用的MySQL版本是8 日志概览 它们记录了数据库系统中的不同操作和事件,以便于故障排除、性能优化和数据恢复。本文将介绍MySQL中常见的几种日志,同时也会介绍一点常用的选项。 官方文档:MySQL :: MySQL 8.0 Reference Manual :: 7.4 M…...
MyBatis 延迟加载,一级缓存,二级缓存设置
MyBatis不仅提供了一级缓存和二级缓存机制,还支持延迟加载(Lazy Loading),以进一步优化性能。 1. 延迟加载(Lazy Loading) 延迟加载是在需要时才加载数据,而不是在查询时立即加载所有相关数据。…...
Linux 基本指令2
cp 指令 cp[选项]源文件 目标文件 将源文件的内容复制到目标文件中,源文件可以有多个,最后一个文件为目标文件,目标文件也可以是一段路径,若目的地不是一个目录的话会拷贝失败。若没有路径上的目录则会新建一个,若源是…...
联邦学习的基本流程,联邦学习权重聚合,联邦学习权重更新
目录 联邦学习的基本流程是 S_t = np.random.choice(range(K), m, replace=False) 联邦学习权重聚合 model.state_dict() 联邦学习权重更新 下载数据集 https://ossci-datasets.s3.amazonaws.com/mnist/train-images-idx3-ubyte.gz 联邦学习的基本流程是 **1. server初始…...
React保姆级教学
React保姆级教学 一、创建第一个react项目二、JSX基本语法与react基础知识1、 插值语法:2、 循环一个简单列表3、 实现简单条件渲染4、 实现复杂的条件渲染5、 事件绑定6、 基础组件(函数组件)7、 使用useState8、 基础样式控制9、 动态类名1…...
数据结构和矩阵细节用法:double、cell和complex #matlab
矩阵建立 建立矩阵用[]; 矩阵的同一行内的元素用逗号或者空格隔开; 矩阵的不同行的元素用分号隔开 eg. 矩阵 A 1 2 3 4 5 6 7 8 9 在matlab中矩阵A表示为: clc;clear; A[1,2,3;4,5,6;7,8,9]; %或者A[1 2 3;4 5 …...
12. Django 第三方功能应用
12. 第三方功能应用 因为Django具有很强的可扩展性, 所以延伸了第三方功能应用. 通过本章的学习, 读者能够在网站开发过程中快速实现API接口开发, 验证码生成与使用, 站内搜索引擎, 第三方网站实现用户注册, 异步任务和定时任务, 即时通信等功能.12.1 Django Rest Framework框…...
UnityWebRequest获取本地txt文件,其中中文乱码问题(踩坑记录)
Unity获取本地streamingassert下txt文件,遇到点问题,就是用UnityWebRequest下载一个txt文件的时候,原txt在资源管理器用notepad打开显示正常,但是Unity里调试,打印内容却是乱码, 在notepad 转存为utf-8&…...
轮到国产游戏统治Steam榜单
6月10日晚8点,《黑神话:悟空》实体版正式开启全款预售,预售开启不到5分钟,所有产品即宣告售罄。 Steam上,《黑神话:悟空》持续占据着热销榜榜首的位置。 但在《黑神话:悟空》傲人的光环下,还有一款国产游戏取得出色的成绩。 6月10日&#…...
从快捷菜单到设置项:Android 11电池功能全移除实战指南
Android 11企业级设备电池功能深度定制指南 在工业平板、自助终端等专用设备场景中,系统界面的精简与定制往往比通用功能更重要。想象一下,一台用于仓库管理的工业平板,电池状态显示不仅毫无意义,还可能引发不必要的用户困惑——…...
给RV1126开发板写个‘WiFi管家’:一个脚本搞定连接、断开、状态查看与网络切换
RV1126开发板WiFi管家:打造智能网络管理工具链 在嵌入式开发领域,效率工具的价值往往被严重低估。想象一下这样的场景:当你需要在RV1126开发板上频繁切换测试环境、调试不同AP配置时,每次都要手动输入一长串命令,不仅…...
3个高效技巧:百度网盘秒传工具实现跨平台文件管理
3个高效技巧:百度网盘秒传工具实现跨平台文件管理 【免费下载链接】baidupan-rapidupload 百度网盘秒传链接转存/生成/转换 网页工具 (全平台可用) 项目地址: https://gitcode.com/gh_mirrors/bai/baidupan-rapidupload 在数字化时代,高效文件传输…...
传统文化与现代AI结合:Guohua Diffusion国风绘画商业应用案例
传统文化与现代AI结合:Guohua Diffusion国风绘画商业应用案例 1. 国风绘画生成工具概述 Guohua Diffusion是一款专为国风绘画设计的本地生成工具,基于原生Guohua-Diffusion模型开发。这款工具完美融合了中国传统绘画艺术与现代AI技术,为艺术…...
RobotStudio机器人轨迹规划:从工件坐标到流畅路径的实战指南
1. 工件坐标系的创建与校准 在RobotStudio中规划机器人轨迹的第一步,就是建立准确的工件坐标系。这就像盖房子前要先打好地基,坐标系就是机器人运动的"地基"。我见过不少新手直接开始示教点位,结果发现机器人总是跑偏,就…...
从零搭建PointRCNN:Linux环境配置与3D检测可视化实战
1. 环境准备:从零搭建Linux深度学习工作站 第一次在Linux系统上配置深度学习环境时,我盯着命令行界面手足无措的样子还历历在目。现在回想起来,其实只要掌握几个关键步骤,就能快速搭建好PointRCNN所需的运行环境。我们以配备NVIDI…...
效率提升:基于快马平台实现openclaw windows部署的自动化与优化
最近在团队里负责优化openclaw在Windows环境的部署流程,发现传统手动部署方式存在不少效率瓶颈。经过在InsCode(快马)平台上的实践,我们实现了一套自动化部署方案,效果提升明显。这里分享几个关键优化点: 全流程一键化部署 过去部…...
GLM-4.1V-9B-Base保姆级教学:Web界面截图+问题输入框最佳实践
GLM-4.1V-9B-Base保姆级教学:Web界面截图问题输入框最佳实践 1. 认识GLM-4.1V-9B-Base GLM-4.1V-9B-Base是智谱开源的视觉多模态理解模型,专门用于处理图像内容识别、场景描述、目标问答和中文视觉理解任务。这个模型已经完成了Web化封装,可…...
SiameseAOE模型多模态扩展探索:结合图像信息的属性抽取
SiameseAOE模型多模态扩展探索:结合图像信息的属性抽取 最近在做一个项目,需要从一堆产品说明书里自动提取技术参数。这些说明书五花八门,有的是纯文本PDF,有的则是图文混排,甚至有些关键参数就印在产品图片的标签上。…...
Ubuntu安装中文输入法后无法输入中文----问题分析及解决方法
问题:之前在Ubuntu系统上安装过搜狗输入法,且能正常输入中文。但重启之后无法调出,Shift切换也不管用,依旧是英文原因分析:后台进程(Fcitx)卡死或崩溃了解决方法:重启Fcitx输入法框架…...
