利用sprintf与snprintf巧妙实现数值变量转换为字符串型

news/2025/10/9 23:59:06/文章来源:https://www.cnblogs.com/misaka114514/p/19132220

0.前情提要

这是在搞STM32开发时遇到的一个问题,要将数字通过串口发送给上位机,但是HAL库中的HAL_UART_Transmit函数只接受uint8_t *类型的参数,因此我们需要通过一个函数先将数值类型变量转换为char *字符串,再强制类型转换为uint8_t *类型的数组。经过上网查询,我发现sprintf函数与snprintf函数可以方便的解决这个问题。

1.直!接!来!吧!

该函数的原型为int sprintf(char *dest, const char *format, ...);,其中*dest为格式化字符串的缓冲区,*format为格式化字符串(后面的参数用法和printf函数几乎一样,可以理解为该函数就让是printf函数原本输出到屏幕上的内容输出到*dest中。)
示例代码:

点击查看代码
char* intToString(int num) {static char buffer[20]; // 静态数组,足够存储32位整数snprintf(buffer, sizeof(buffer), "%d", num);return buffer;
}

该方法有可能输出内容太长导致缓冲区溢出,不过对于一般的应用场景来说足够用了。
为了防止这种状态的发生,可以使用snprintf()函数,该函数的原型为int snprintf ( char * str, size_t size, const char * format, ... );,其中size参数为要写入的字符的最大数目。如果格式化后的字符串长度超过了size-1,则snprintf()只会写入size-1个字符,并在字符串的末尾添加一个空字符(\0)以表示字符串的结束。
这两个函数的返回值规则是一样的:

  • 如果成功,返回将要写入的字符数(不包括结尾的空字符),即使这个值大于size
  • 如果发生编码错误,返回负值。

先写这么多吧我要睡了明天怎么还有早八高数啊啊啊啊啊

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/933928.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Helmholtz-Gibbs自由能与熵弹性

2025.10.09 开坑Helmholtz 自由能定义:热力学中一个非常重要的势函数,常用于描述恒温(Isothermal)和恒容(Isochoric)条件下的系统。 Helmholtz 自由能的定义公式可以写为 \[ \psi = \]Gibbs 自由能定义 熵弹性定…

日志|电话号码的字母组合|子集|回溯

解题思路:回溯三问:1.当前操作?枚举数组path[i]要填入的字母 2.子问题?构造字符串>= i 的部分 3.下一个子问题?构造>= i+1 的部分对于本题1.当前操作:枚举放入path当前i的字母 例如第2个数字对应的a b c …

Rust 的验证码图像识别系统设计与实现

一、研究背景 验证码(CAPTCHA)是互联网安全中最常见的防护手段之一,用于区分人类用户与自动化程序。 近年来,随着OCR(Optical Character Recognition,光学字符识别)与机器学习的发展,验证码识别已成为人工智能…

Docker实用篇(初识Docker,Docker的基本操作,Dockerfile自定义镜像,Docker-Compose,Docker镜像仓库) - a

Docker实用篇(初识Docker,Docker的基本操作,Dockerfile自定义镜像,Docker-Compose,Docker镜像仓库) 目录Docker实用篇(初识Docker,Docker的基本操作,Dockerfile自定义镜像,Docker-Compose,Docker镜像仓库)0.学习目…

ROIR 2023

ROIR 2023 评分 \(\in[0,10]\)。 https://www.luogu.com.cn/problem/list?type=luogu&page=1&tag=479|60&orderBy=pid&order=asc 矩形分割 (Day 1) \(3\)。 根据题意列出二元二次方程,用 \(k\) 换元…

【题解】P12992 [GCJ 2022 #1C] Intranets

以此纪念我洛谷 AC 的第 \(999\) 个题。 \(2025.10.09\) 题意: 天网是一张无向图 \(G\) ,包含 \(n\) 个点。一开始,天网上没有任何边。你以等概率随机顺序依次对所有的点对尝试加边。 每次尝试加边 \((u,v)\) 的时候…

ysyx:pa3.1批处理系统

ysyx:pa3.1批处理系统批处理系统 为了让管理员事先准备好一组程序, 让计算机执行完一个程序之后, 就自动执行下一个程序,提出了批处理系统的思想。处理系统的关键, 就是要有一个后台程序, 当一个前台程序执行结束的时…

基于 C 语言的验证码图像识别系统实现

一、项目背景 验证码(CAPTCHA, Completely Automated Public Turing test to tell Computers and Humans Apart)是一种常见的安全验证手段,用于防止机器自动提交表单、恶意注册等操作。随着计算机视觉与OCR(光学字…

C++篇:003

C++篇:003$(".postTitle2").removeClass("postTitle2").addClass("singleposttitle");C++篇:003.STL 一、STL概述 从根本上说,STL是一些“容器”的集合,也是算法和其他一些组件的集…

C 语言的验证码图像识别系统实现

一、项目背景 验证码(CAPTCHA, Completely Automated Public Turing test to tell Computers and Humans Apart)是一种常见的安全验证手段,用于防止机器自动提交表单、恶意注册等操作。随着计算机视觉与OCR(光学字…

oppoR9m刷Linux系统: 引导知识

前言全局说明注意:刷机,会丢失用户:照片、聊天等信息资料。请备份基带等信息。请慎重刷机 !!! 注意:刷机,会丢失用户:照片、聊天等信息资料。请备份基带等信息。请慎重刷机 !!! 注意:刷机,会丢失用户:照片、聊…

JAVA: Mybatis添加xml执行多行更新语句时报错

JAVA: Mybatis添加xml执行多行更新语句时报错tableMapper.xml<update id="updateTables" parameterType="Table"><foreach collection="tableList" item="item" sep…

安装Docker(CentOS安装Docker,CentOS7安装DockerCompose,Docker镜像仓库) - a

0.安装Docker 目录0.安装Docker1.CentOS安装Docker1.1.卸载(可选)1.2.安装docker1.3.启动docker1.4.配置镜像加速2.CentOS7安装DockerCompose2.1.下载2.2.修改文件权限2.3.Base自动补全命令:3.Docker镜像仓库3.1.简…

所有文档每页的第一行居中对齐

Sub 所有文档每页的第一行居中对齐()文件夹路径 = "C:\Users\你的用户名\Desktop\批量办公项目库\物业\第二次\300元含以下的住户\" 获取文件夹中第一个Word文档文件名 = Dir(文件夹路径 & "*.doc*…

065_尚硅谷_赋值运算符基本使用

065_尚硅谷_赋值运算符基本使用1.赋值运算符介绍和分类2.两个变量值互换方法1:定义一个临时变量,方法2:复合赋值的操作 3.赋值运算符的特点

上代码演示下Profile-Guided Optimization (PGO)

Shell脚本名叫step#!/bin/bashif [[ $# -ne 1 ]]; then exit; firun() { C="g++ $1 main.cpp"; echo $C; $C; a.out; }case $1 in 0) run ;; 1) run -fprofile-generate=. ;; 2) run -fprofile-use=. ;; # …

一个有趣的网站,可以给自己生成一个奖牌:aitokenawards.com

一个有趣的网站,可以给自己生成一个奖牌:aitokenawards.com 一个有趣的网站,可以给自己生成一个奖牌:AI Token Awards JSON Formatter - AI Token Awards

109

栈的特性(后进先出) 顺序栈 增删改的时间复杂度为O(1) top指针与base指针,top与base指针指向0和-1的时候关于top指针指向的顶端位置不同 先压后加,先减后弹

20232416 2025-2026-1《网络与系统攻防技术》实验一实验报告

一、实验目标及内容实验内容:手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数。利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数。注入一个自己制作的shellcode并运行…

day008

今日完成:html标签页的排列 明日完成:html 遇到问题:无