sprintf_s的用法探究

news/2024/11/21 1:24:12/

这个函数定义如下

int sprintf_s(char *buffer,size_t sizeOfBuffer,const char *format [,argument] ... 
);

参数说明是这样的,第一个参数buffer是输出存储位置,第二个参数sizeOfBuffer是最大允许的字符数。

下面通过代码简单探究一下这个函数的应用,如果以后有更好的例子会持续更新

void FormatMyStr()
{// 注意这里规定的格式是后边的格式样式,即后边123则为%d,后边为"123"则为%s// 同理,规定占位及左右对其,保留位数也是规定后边参数的// 这里发现我sprintf_s设置的buff_size参数502一口气走下去会报堆栈溢出错误,这里官方的解释为最大允许的字符数,因此还是不要超过字符串的大小了,不然会出问题using namespace std;string strTest = "23";char strTest2[128] = { 0 };memset(strTest2, 0, 128);/* 赋值成为"123" */sprintf_s(strTest2, 128, "%d", 123);/* 将"23"复制过去 */sprintf_s(strTest2, 130, "%s", strTest.c_str());/* 占4位,右对齐。输出为"  23" */sprintf_s(strTest2, 128, "%4s", strTest.c_str());/* 占四位,右对齐,空的部分以0补位。输出为"0023"*/sprintf_s(strTest2,128, "%04s", strTest.c_str());/* 保留4位小数,没有四舍五入 */sprintf_s(strTest2, 128, "%.4f", 1.23456789);/* 占8位,保留4位小数,右对齐,想左对齐可以设置为%-8.4f */sprintf_s(strTest2, 128, "%8.4f", 1.23456789);/* 前面的操作会丢失之前存入的数据,这样可以保留strTest2之前的数据,注意不要颠倒顺序 */sprintf_s(strTest2, 128, "%s%s",strTest2,"23");/* 大写的右对齐16进制格式化 */sprintf_s(strTest2, 128, "%08X", "23");/* 通过这种方法可以取固定小数位,且支持四舍五入,但是想转回去好像又是一个麻烦事直接利用atof发现会出点问题并没有按想象中原样转过去。所以建议放大1000倍,用atoi转过去之后再还原过去吧。。 */stringstream ss;ss << setiosflags(ios::fixed) << setprecision(3) << 1.654887521;ss >> strTest;return;
}


http://www.ppmy.cn/news/491194.html

相关文章

S形曲线速度规划--5段式

为了减小机器人加速过程的冲击&#xff0c;这里梳理一下S形加减速相关知识。1. S加减速曲线 计算公式&#xff1a; 加加速度j ( t ) { J 0 ≤ t ≤ t 1 − J t 1 ≤ t ≤ t 2 0 t 2 ≤ t ≤ t 3 − J t 3 ≤ t ≤ t 4 J t 4 ≤ t ≤ t 5 j(t)\begin{cases} J & 0\leq t \l…

K8s端口映射

分享一个大牛的人工智能教程。零基础&#xff01;通俗易懂&#xff01;风趣幽默&#xff01;希望你也加入到人工智能的队伍中来&#xff01;请点击http://www.captainbed.net 1、nodePort 外部流量访问K8s集群中Service入口的一种方式&#xff08;另一种方式是LoadBalancer&a…

DES算法S盒学习

在密码学中&#xff0c;S盒(Substitution-box)是对称密钥算法执行置换计算的基本结构。 S盒用在分组密码算法中&#xff0c;是唯一的非线性结构。 S盒是将48比特压缩成32比特&#xff0c;S盒接受特定数量的输入48比特&#xff0c;经过8个盒将其转换为32比特输出。 在DES算法中…

K8s集群重新初始化

学习来源&#xff1a; 51cto: https://edu.51cto.com/sd/518e5 腾讯课堂: https://ke.qq.com/course/2738602 K8s集群环境搭建&#xff1a;https://blog.csdn.net/qq_26900081/article/details/109291999 学习过程中一不小心把K8s给折腾坏了&am…

PHP -S 命令

从php5.4开始&#xff0c;引入了一个内置web服务器&#xff0c;可以在测试环境迅速搭建web环境而无须复杂的配置。性能肯定是不如nginx和apache服务器的&#xff0c;生成环境还是要搭建服务器。 1-命令使用方法&#xff1a; php -S 0.0.0.0:99 当然的其前提是进入到项目的相…

海思开发:yolo v5s :pytorch->onnx->caffe->nnie

一、前言 主要是遇见几个问题&#xff0c;赶紧记录一下&#xff0c;免得后面兄弟们吃同样的亏,也帮助自己记忆。附上我的 yolo v5 后处理部分 c 语言版本代码&#xff1a;C版 yolo v5s 后处理部分 二、转换报错 1. 报错&#xff1a; Reshape dimention number shall be 2 or…

K8s 端口映射

原文链接 https://www.jianshu.com/p/8275f2031c83 1. nodePort 外部流量访问k8s集群中service入口的一种方式&#xff08;另一种方式是LoadBalancer&#xff09;&#xff0c;即nodeIP:nodePort是提供给外部流量访问k8s集群中service的入口。比如外部用户要访问k8s集群中的一…

windows本地安装K8S

一、安装docker desktop windows 安装k8s &#xff0c; 首先需要安装docker&#xff0c;一般我们是安装docker desktop&#xff0c; Windows版的Docker Desktop 是社区版本&#xff0c;您可以从Docker Hub上直接下载&#xff0c;下载链接如下&#xff1a; Docker Hub 系统…