snprintf与sprintf的区别
代码:
#include <stdio.h>int main()
{char data1[10];char data2[10];int ret1, ret2;ret1 = sprintf(data1, "My name is Messi, I'm %d years old!", 28);;printf("%s\n", data1);ret2 = snprintf(data2, sizeof(data2), "My name is Messi, I'm %d years old!", 28);printf("%s\n", data2);printf("ret1=%d, ret2=%d\n", ret1, ret2);return 0;
}
运行结果:
结论:
1.
sprintf进行处理时不会进行越界判断,如果欲写入的字符串长度大于等于字符数组长度,
会直接对之后的内存进行覆盖,极不安全。
snprintf则会考虑到字符数组的长度,若字符数组长度为n字节,则最多写入n-1字节,然后再在后面加上'\0'。
不会越界操作,这也是其被作为sprintf的替代函数的理由。
2.
sprinf返回的是实际写入的字符串长度。
snprintf返回的是欲写入的字符串长度。
snprintf与sprintf的区别相关推荐
- 【21】printf()与sprintf()的区别
[1]基本概念 [1.1] 数据-------->屏幕 printf() printf_s() (1)printf只是检查format字符串是否为空.如果为空,会触发assert(fal ...
- linux c之snprintf()和sprintf()区别
1.snprintf函数 int snprintf(char *str, size_t size, const char *format, ...); 将可变个参数(...)按照format格式化成字 ...
- golang Println、Printf、Sprintf的区别
Println :可以打印出字符串,和变量 Printf : 只可以打印出格式化的字符串,可以输出字符串类型的变量,不可以输出整形变量和整形 Sprintf:用传入的格式化规则符将传入的变量格式化,( ...
- printf,sprintf,vsprintf 区别【转】
转自:http://blog.csdn.net/anye3000/article/details/6593551 有C语言写作历史的程序员往往特别喜欢printf 函数.即使可以使用更简单的命令(例如 ...
- 三个打印函数printf()/sprintf()/snprintf()区别
先贴上其函数原型 printf( const char *format, ...) 格式化输出字符串,默认输出到终端-----stdout sprintf(char *dest, const c ...
- sprintf, snprintf, _snprintf, sprintf_s 等的区别
先放结论 1.在支持snpritf的编译器 ,只使用int snprintf( char *buffer, size_t count, const char *format [, argument] ...
- sprintf 和 snprintf区别
sprintf 和snprintf 函数区别 sprintf 函数定义见: https://cplusplus.com/reference/cstdio/sprintf/ snprintf 函数定义见 ...
- 【字符串处理函数】sprintf与snprintf
sprintf与snprintf 1.功能 1.1 sprintf 1.2 snprintf 2.函数说明 2.1 sprintf 2.1.1 函数原型 2.1.2 参数列表: 2.1.3 返回值: ...
- 关于sprintf和snprintf的比较
#include <stdio.h> #include <string.h>typedef unsigned char uchar;#define BUF_SIZE 10 // ...
- snprintf()函数探讨
printf()/sprintf()/snprintf()区别 先贴上其函数原型 printf( const char *format, ...) 格式化输出字符串,默认输出到终端-----s ...
最新文章
- BBQ Hard dp + 组合数学 + 建模
- struts+hibernate+oracle+easyui实现lazyout组件的简单案例——Jsp页面
- Pravega应用实战:为什么云原生特性对流处理很重要?
- XPDF3.04抽取PDF中的中文文本
- JDK 14 调试神器了解一下?| 原力计划
- CLin 和 IDEA创建文件时自动添加作者和时间信息 + 多个.cpp文件在CLion下运行问题...
- spring读取配置文件
- 图片与路径(Path)的应用
- VS2010:外部依赖目录错误,怎么办
- 【kmp专题】牛客网子串(进制转化+kmp/string.find())
- BT种子结构及bencoding编码解析
- 自己写一个RTOS系统
- 灰度图学习_为什么灰度图是灰色的??
- NLP 1st (导入)
- SQL之like通配符
- 2018俄罗斯世界杯 模拟抽签结果 (PHP版)
- 狂神说JavaWeb笔记(超级详细)
- 【转】BOSS系统简介
- 电脑表格显示一直在计算机,每次打开电子表格总出现这个提示,怎么一回事
- SOM-TL665x核心板 EEPROM/JTAG仿真器接口/串口
热门文章
- MaxCompute命令行工具——odpscmd的操作使用
- 还花几个小时整理线缆你就OUT了,VR自由漫步来了
- /etc/mtab is not writable
- android studio选中全部,android - Android Studio风格维度已全部处理,未选中一项 - 堆栈内存溢出...
- info index.php,真 · nginx配置php文件解析(PATH_INFO支持与index.php隐藏)
- IOCAutofac与ORMEntityFramwork的联系--单例模式
- Linux Mysql5.6安装
- #动态规划 LeetCode 120 三角形最小路径和
- 从现实抽象出类的步骤
- Linux下搭建BT服务器