1、将数据格式化输出到字符串.

(1)函数1  int sprintf_s(char *restrict buffer, rsize_t bufsz,  const char *restrict format, ...);

(2)函数2:int sprintf( char *buffer, const char *format, [ argument] … );

 buffer:待存入字符串,bufsz:待写入缓冲区大小

  format:待存入格式,%[指定参数$][标识符][宽度][.精度]指示符

[argument]...:可选参数,可以是任何类型的数据。

%c 整数转成对应的 ASCII 字元
%d 整数转成十进位。
%f 把精确度数字转成浮点数
%o 整数转成八进位。(字母o)
%s  整数转成字串。
%x 整数转成小写十六进位
%X 整数转成大写十六进位。

sprintf_s()是sprintf()的安全版本,通过指定缓冲区长度来避免sprintf()存在的溢出风险。

直接上代码:

#include <iostream>
using namespace std;
int main()
{char ch[20] = { 0 };int nValue = 812446;sprintf_s(ch, sizeof(ch)-1, "%X", nValue);  //sizeof(ch)-1的大小必须大于等于待写入字符串的大小,否则会出错。float fValue = 0.35456;char ch1[20] = { 0 };sprintf_s(ch1,"%.3f",fValue);//可以不用指定return 0;
}

他们之间的区别可参考:

sprintf_s、_snprintf与_snprintf_s_程序猿的专栏-CSDN博客

https://blog.csdn.net/lanzhihui_10086/article/details/44221935?utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control

可以使用_snprintf_s函数,它比sprintf_s安全

//如下的数组赋值就不会发生溢出。
    char ch[8] = { 0 };
    float fValue = 0.35456;
    int nValue = 87654321;
    _snprintf_s(ch, sizeof(ch)-1, "%d", nValue);

2、字符串复制函数:strncpy_s()、strncpy()。

(1)语法形式为:char *strncpy_s(char *dest, const char *src, int n).

表示把src所指向的字符串中以src地址开始的前n个字节复制到dest所指的数组中,并返回被复制后的dest。

(2)语法形式为:strncpy_s(char * restrict dest,rsize_t destsz,

const char * restrict src,rsize_t count);

这里多了一个长度,就是destsz,目标缓冲区的大小

直接上代码

#include <iostream>
struct stuVar1 {char cName[30];char cNumber[12];
};
struct stuVar2 {int nCount;char cSubJectName[50];stuVar1 stu;
};struct stuVar3 {int nCount;char cSubJectName[50];char cName[30];char cNumber[12];
};void function1(stuVar2* stuSrc, stuVar3* stuDest) {strncpy_s(stuDest->cName, stuSrc->stu.cName,29);  strncpy_s(stuDest->cNumber, stuSrc->stu.cNumber, 11);strncpy_s(stuDest->cSubJectName, stuSrc->cSubJectName,49);stuDest->nCount = stuSrc->nCount;
}
int main()
{std::cout << "Hello World!\n";stuVar1 stu1 = {sizeof(stuVar1),0}; //结构体初始化 const char* pName = "XiaoWang";strncpy_s(stu1.cName, pName, sizeof(stu1.cName)-1);const char* pNumber = "13235678967";strncpy_s(stu1.cNumber, pNumber, sizeof(stu1.cNumber) - 1);char dst1[6], src1[100] = "hello";strncpy_s(dst1, 6, src1, 100);stuVar2 stu2 = { sizeof(stuVar2),0 };stu2.nCount = 2;const char* pSubject = "Physical";strncpy_s(stu2.cSubJectName, pSubject, sizeof(stu2.cSubJectName) - 1);stu2.stu = stu1;stuVar3 stu3 = {sizeof(stuVar3),0};function1(&stu2, &stu3);}

strncpy_s()函数比strncpy()函数安全,他们之间的区别如下:

strncpy_s_字符串 | Strings_C_参考手册_非常教程

3、字符串比较函数:

(1)char*字符串比较:int strcmp( const char *string1, const char *string2 )

(2)wchar_t字符串比较:int wcscmp( const wchar_t *string1, const wchar_t *string2 );

string1string2 为以零值结尾的字符串所有版本的c运行库都支持

返回值

< 0

string1 小于string2

0

string1string2相等

> 0

string1 大于 string2

wcscmp 比较宽字符

4、C++中宏定义字符、参数替换:

[C++] C++中的宏定义详解 - zhizhiyu - 博客园

宏中#、##、__VA_ARGS__和##__VA_ARGS__的作用:

https://blog.csdn.net/q2519008/article/details/80934815?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-3.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-3.control

5、char字符串的分割:

strtok(), strtok_s() 字符串分割函数 - czhoud - 博客园

C++ 分割字符串两种方法 - 盛开的石头 - 博客园

c++数据格式化输出/字符串复制/字符串比较相关推荐

  1. day02 格式化输出 运算符 编码 字符串 列表 元组 字典 set集合 深浅拷贝

    day02学习大纲 一. 格式化输出: %s 占位字符串 %d 占位数字 "xxx%sx %sxx" % (变量, 变量) 二. 运算符: a+=b a = a + b and 并 ...

  2. pytho格式化输出整数小数字符串

    python print格式化输出. 打印字符串 print("His name is %s,Hello"%("Aviad")) print("His ...

  3. python之json数据格式化输出方法

    问题:json格式数据直接print打印无格式,在数据量较多时,不便于人眼高效找到数据 预期:json数据格式化输出,一行一个key.value 解决:使用json模块dumps函数的参数indent ...

  4. 格式化输出,运算符,编码,字符串(索引,切片,大小写转换等等)

    格式化输出%s和format{} , 运算符 , 编码 , 字符串(索引,切片,大小写转换,拉长字符,去空格,替换,切割,格式化输出format , count数数 , find查找 , index求 ...

  5. php JSON数据格式化输出方法

    php 的json_encode能把数组转换为json格式的字符串.字符串没有缩进,中文会转为unicode编码,例如\u975a\u4ed4.人阅读比较困难.现在这个方法在json_encode的基 ...

  6. 用C语言解“混合类型数据格式化输出”题

    7-6 混合类型数据格式化输入 本题要求编写程序,顺序读入浮点数1.整数.字符.浮点数2,再按照字符.整数.浮点数1.浮点数2的顺序输出. 输入格式: 输入在一行中顺序给出浮点数1.整数.字符.浮点数 ...

  7. 在JAVA中把JSON数据格式化输出到控制台

    package com.test.jsonUtility; /** * @author      * @date 创建时间:2017年10月17日 上午11:11:42     * @version ...

  8. python json.dumps()函数输出json格式,使用indent参数对json数据格式化输出

    最近使用json.dumps()来输出json数据,发现输出的数据是一行,看着太别扭了,不美观.发现可以使用indent参数来控制 import jsondicts={"name" ...

  9. C++64位数据格式化输出

    关于printf函数输出64位数的问题,其实在window下和linux下是不一样的: linux下是 printf("%lld/n",a); printf("%llu/ ...

  10. python123格式化输出_python 字符串格式化输出 %d,%s及 format函数

    旧式格式化方式:%s,%d 1.顺序填入格式化内容 s = "hello %s, hello %d"%("world", 100) print(s) 结果: ' ...

最新文章

  1. 实测DB_BLOCK_CHECKSUM=FULL的作用
  2. python如何创建excel文件_Python xlrd/xlwt 创建excel文件及常用操作
  3. 信息学奥赛C++语言:数一数
  4. Android屏幕适配的两种方式
  5. django 1.8 官方文档翻译: 2-4-4 编写迁移
  6. 剑指offer之二叉搜索树的第K个结点
  7. 求数组中最长连续递增子序列
  8. 城市轨道交通运营票务管理论文_城市轨道交通运营管理浅析
  9. 一篇Word论文的字体格式是什么?
  10. 奔驰北京工厂两年内将再投产三款电动车;希尔顿中国市场第300家酒店开业 | 美通企业日报...
  11. C++-导出类-导出宏-纯虚函数-DllMain函数-调用约定与参数命名
  12. 小程序实现单词查询搜索及搜索的历史记录
  13. python读取手机通讯录_python爬取通讯录
  14. 一些情况及问题的说明
  15. 牛顿法求临界水深c语言程序,基于牛顿迭代法的圆形断面临界水深直接计算法邹武停.pdf...
  16. 搭建我的云端服务器环境
  17. Typecho炫彩鼠标插件:HoerMouse
  18. 用matlabd批量处理图片
  19. html5在微信浏览器下调用复制功能
  20. 【vscode 插件】为 markdown 文章标题自动添加多级序号

热门文章

  1. el-table的使用总结
  2. Linux的运行级别/模式
  3. python脚本调度程序_python任务调度实例分析
  4. mate10鸿蒙测试版,华为鸿蒙 2.0 开发者公测版 Bata 3 更新:增加三个鸿蒙应用
  5. python perl 正则_为什么说perl的正则表达式功能比Python强大
  6. vm虚拟机修改物理时间_GPU虚拟机创建时间深度优化
  7. python3下载url图片假死_利用Python 向FTP 上传图片,程序假死?
  8. 图片渲染延迟_Qt入门DirectX11学习之旅(六)DirectX11 GBuffer Deffered延迟渲染
  9. python标准库os中的方法startfile_如何使用Python 打开exel等各种文件或者应用,就用:os.startfile...
  10. kafka与mysql持久化_漫游Kafka设计篇之数据持久化