`
hzy3774
  • 浏览: 993008 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

sprintf 与 snprintf(_snprintf)的区别(n的含义)

 
阅读更多

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/*
*sprintf 与 snprintf的区别
*/

void main(){
	int a, b;
	int i = 10;
	char c1[100];
	char c2[100];

	//将字符数组格式化,返回格式化完成后数组大小,不管数组大小
	a = sprintf(c1, "result is %d", i);
	printf("%s %d\n", c1, a);

	//VC6.0里面是_snprintf,但在有的编译器里面没有下划线
	//必须要指定指定数组的容量,一旦越界就返回-1,否则返回字符数量
	//传的值是数组容量,必须比字符数量大1以上,如传13,返回12;如果传12就会出错,并返回-1;
	b = _snprintf(c2, 13, "result is %d", i);
	printf("%s %d\n", c2, b);

	//与一些字符数组操作函数类似,带n的函数需要指定大小
	strcpy(c1,"hello");
	puts(c1);

	//参数值要大于字符串长度,5个字符的话至少需要传入6,才会连‘\0’也拷贝
	//否则只能拷贝指定个数的字符
	strncpy(c2, "world", 6);
	puts(c2);
}
 


 
  • 大小: 10.9 KB
分享到:
评论

相关推荐

    安全函数strcpy_s、strncpy_s、snprintf_s、memcpy_s

    3. **snprintf_s**: 这是`sprintf`的安全版本。`snpintf`函数将格式化的数据写入字符串,但如果不小心可能导致缓冲区溢出。`snprintf_s`会在写入前检查目标缓冲区大小,防止溢出。它的语法是`snprintf_s(dest, size,...

    snprintf 的实现

    `snprintf`的名字来源于“sprintf”(用于格式化输出到字符串)与“n”(表示输出的长度限制)的组合,它在安全性和控制性上比`sprintf`更胜一筹,因为`snprintf`可以防止缓冲区溢出。 在`ijs.si`版本2.2的实现中,...

    格式化字符串例子

    printf,sprintf,sprintf_s,_snprintf_s,vsprintf,vsnprintf,_vsnprintf_s,_vscprintf等格式化字符串使用与区别例子

    理解snprintf()函数

    snprintf()函数是C标准库中的一个输出函数,用于格式化输出并将结果存入字符串中,它是sprintf()的变体,增加了缓冲区大小限制的功能,从而避免了缓冲区溢出的风险。 snprintf()函数的声明如下: ```c int snprintf...

    sprintf函数的用法

    snprintf函数相比于sprintf增加了一个参数,即n,表示目标数组str的大小。snprintf函数会根据数组大小n,确保在写入数据时不会超出数组界限,防止溢出。 snprintf函数的返回值是实际写入到目标字符串中的字符数(不...

    深入分析C中不安全的sprintf与strcpy

    经过跟踪调试, 发下不少 bug 源于 sprintf 和 ... 您可能感兴趣的文章:浅析C语言中printf(),sprintf(),scanf(),sscanf()的用法和区别基于C语言sprintf函数的深入理解C++中sprintf()函数的使用详解基于C++中sprintf的错

    sprintf,vsprintf越界问题

    sprintf 和 vsprintf 越界问题 sprintf 和 vsprintf 是两种常用的字符串格式化函数,但是它们也存在越界问题。如果参数太长,可能会导致越界,严重的会导致单板异常复位或其他单板运行异常。 一、sprintf 越界问题...

    sprintf函数详细解释

    sprintf函数的功能与printf函数类似,不同之处在于printf函数将格式化后的字符串输出到标准输出设备,如屏幕,而sprintf则将输出内容存储到指定的字符串中。 sprintf的函数原型为: ```c int sprintf(char *str, ...

    sprintf的用法

    ### sprintf的用法及其与printf的区别 在C语言编程中,`sprintf`和`printf`都是非常重要的函数,它们被广泛用于格式化字符串的输出。本文将深入探讨`sprintf`的用法,并通过与`printf`的对比来进一步理解这两种函数...

    sprintf()后面的...的研究

    本文将深入探讨`sprintf`的工作原理以及如何通过`snprintf`避免数组越界。 `sprintf`函数的原型是`int sprintf(char *str, const char *format, ...)`,它接收一个格式字符串和可变数量的参数。格式字符串中可以...

    sprintf函数详细介绍

    sprintf函数是C语言标准库中的一个重要的函数,用于格式化字符串并将结果存储在指定的缓冲区中。sprintf函数是与printf函数...因此,开发者在使用sprintf时需要格外注意,并在必要时使用更安全的替代函数,如snprintf。

    MCU 字符串高级处理函数SPRINTF用法

    如果格式化操作非常简单或者仅涉及固定长度的数据,应考虑使用替代方案,比如snprintf,它是sprintf的一个变体,增加了限制输出字符数量的参数,从而可以控制输出的长度并避免溢出。 6. 总结 sprintf函数在MCU开发...

    sprintf_s:提前减速

    在编程领域,安全性与效率往往是开发者关注的两大核心问题。在C语言中,`printf`家族的函数由于其灵活性和广泛性,被广泛应用。然而,传统的`printf`系列函数存在潜在的安全隐患,比如格式化字符串攻击。为了解决...

    strncpy与snprintf 的用法比较

    snprintf的正确用法:snprintf(dest, sizeof(dest), “%s”, src); strncpy的问题:1.size一定要用sizeof(dest)或sizeof(dest)-1,不可误用sizeof(src). 2.手工填0. 务必要把dest的最后一个字节手工设置为0. 因为...

    c语言sprintf函数.pdf

    C语言中的sprintf函数是一个重要的标准库函数,主要功能是将格式化的数据写入字符串中。sprintf函数原型在stdio.h头文件中声明,它属于C标准输入输出库。sprintf函数的使用需要对格式化输出有一定的了解,同时也需要...

    sprintf函数的用法[借鉴].pdf

    sprintf(buffer, "An approximation of Pi is %.6f\n", M_PI); puts(buffer); int num1 = 123; int num2 = 4567; sprintf(buffer, "%8d%8d", num1, num2); puts(buffer); unsigned int hex_num = 4567; ...

    sprintf函数的用法[参考].pdf

    `sprintf`的使用方法与`printf`类似,都是基于格式化字符串来实现数据转换和输出。 函数的原型如下: ```c int sprintf(char *string, const char *format, [argument,...]); ``` 其中,`string`参数是接收格式化...

    062 浮点数转换为字符串 C语言

    另外,C99标准引入了`&lt;stdio.h&gt;`中的`sprintf`函数,它与`snprintf`非常相似,但不检查缓冲区大小,因此在使用时需格外小心,避免溢出。 此外,还可以使用第三方库,如`glib`库中的`g_strdup_printf`函数,或者其他...

    safeclib-master.zip linux libsafec linux安全函数源码

    3. `sprintf_s()`和`snprintf_s()`:这些是`sprintf()`和`snprintf()`的增强版,它们会在格式化字符串时检查缓冲区大小,避免溢出。 4. `strcat_s()`和`strncat_s()`:这两个函数分别对`strcat()`和`strncat()`进行...

Global site tag (gtag.js) - Google Analytics