代码:

#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的区别相关推荐

  1. 【21】printf()与sprintf()的区别

    [1]基本概念 [1.1] 数据-------->屏幕 printf()     printf_s() (1)printf只是检查format字符串是否为空.如果为空,会触发assert(fal ...

  2. linux c之snprintf()和sprintf()区别

    1.snprintf函数 int snprintf(char *str, size_t size, const char *format, ...); 将可变个参数(...)按照format格式化成字 ...

  3. golang Println、Printf、Sprintf的区别

    Println :可以打印出字符串,和变量 Printf : 只可以打印出格式化的字符串,可以输出字符串类型的变量,不可以输出整形变量和整形 Sprintf:用传入的格式化规则符将传入的变量格式化,( ...

  4. printf,sprintf,vsprintf 区别【转】

    转自:http://blog.csdn.net/anye3000/article/details/6593551 有C语言写作历史的程序员往往特别喜欢printf 函数.即使可以使用更简单的命令(例如 ...

  5. 三个打印函数printf()/sprintf()/snprintf()区别

    先贴上其函数原型 printf( const char *format, ...)    格式化输出字符串,默认输出到终端-----stdout sprintf(char *dest, const c ...

  6. sprintf, snprintf, _snprintf, sprintf_s 等的区别

    先放结论 1.在支持snpritf的编译器 ,只使用int snprintf( char *buffer, size_t count, const char *format [, argument] ...

  7. sprintf 和 snprintf区别

    sprintf 和snprintf 函数区别 sprintf 函数定义见: https://cplusplus.com/reference/cstdio/sprintf/ snprintf 函数定义见 ...

  8. 【字符串处理函数】sprintf与snprintf

    sprintf与snprintf 1.功能 1.1 sprintf 1.2 snprintf 2.函数说明 2.1 sprintf 2.1.1 函数原型 2.1.2 参数列表: 2.1.3 返回值: ...

  9. 关于sprintf和snprintf的比较

    #include <stdio.h> #include <string.h>typedef unsigned char uchar;#define BUF_SIZE 10 // ...

  10. snprintf()函数探讨

    printf()/sprintf()/snprintf()区别  先贴上其函数原型 printf( const char *format, ...)    格式化输出字符串,默认输出到终端-----s ...

最新文章

  1. BBQ Hard dp + 组合数学 + 建模
  2. struts+hibernate+oracle+easyui实现lazyout组件的简单案例——Jsp页面
  3. Pravega应用实战:为什么云原生特性对流处理很重要?
  4. XPDF3.04抽取PDF中的中文文本
  5. JDK 14 调试神器了解一下?| 原力计划
  6. CLin 和 IDEA创建文件时自动添加作者和时间信息 + 多个.cpp文件在CLion下运行问题...
  7. spring读取配置文件
  8. 图片与路径(Path)的应用
  9. VS2010:外部依赖目录错误,怎么办
  10. 【kmp专题】牛客网子串(进制转化+kmp/string.find())
  11. BT种子结构及bencoding编码解析
  12. 自己写一个RTOS系统
  13. 灰度图学习_为什么灰度图是灰色的??
  14. NLP 1st (导入)
  15. SQL之like通配符
  16. 2018俄罗斯世界杯 模拟抽签结果 (PHP版)
  17. 狂神说JavaWeb笔记(超级详细)
  18. 【转】BOSS系统简介
  19. 电脑表格显示一直在计算机,每次打开电子表格总出现这个提示,怎么一回事
  20. SOM-TL665x核心板 EEPROM/JTAG仿真器接口/串口

热门文章

  1. MaxCompute命令行工具——odpscmd的操作使用
  2. 还花几个小时整理线缆你就OUT了,VR自由漫步来了
  3. /etc/mtab is not writable
  4. android studio选中全部,android - Android Studio风格维度已全部处理,未选中一项 - 堆栈内存溢出...
  5. info index.php,真 · nginx配置php文件解析(PATH_INFO支持与index.php隐藏)
  6. IOCAutofac与ORMEntityFramwork的联系--单例模式
  7. Linux Mysql5.6安装
  8. #动态规划 LeetCode 120 三角形最小路径和
  9. 从现实抽象出类的步骤
  10. Linux下搭建BT服务器