sprintf和snprintf测试

来源:互联网 发布:淘宝时尚男装店铺 编辑:程序博客网 时间:2024/05/17 09:00

1、  Sprintf

Char pszInfoBuf[50];

Sprint(pszInfoBuf, “***File:%sLine%d***”,__FILE__, __LINE__);                   //__FILE__过长,pszInfoBuf装不下程序异常。输出数组越界

2、  Snprintf/_snprintf(将整型数据转换为字符型数据)

在VC,VS下面只能用_snprintf,经过测试发现_snprintf()函数不会在转换以后添加’\0’标志,测试代码如下

char sa[5] = {1, 2, 3, 4, 5};

   int b = 54321;

 

         _snprintf(sa,3, "%d", b);        //sa的值5,4,3,45

         _snprintf(sa,5, "%d", b);                   //sa的值54,3,2,1

   _snprintf(sa, 6, "%d", b);                   //sa的值5,4,3,2,1

printf(sa);         

注意:_snprintf使用时”%d”的数据类型是b的数据类型

Sprint/_sprintf作用主要有以下两点:

第一:将整型数据转换为字符串数据

第二:将字符串数据转换为特定格式的字符串数据

_snprintf正确使用方法

   char sa[10];

   int sb = 123456789;

   int result = _snprintf(sa, sizeof(sa), "%d",sb);

   if (result == sizeof(sa)|| result < 0)    //当_snprintf发生截取时则会返回-1,否则返回个数

   {

       printf("warning;string will betruncated\n");

       sa[sizeof(sa) - 1] = 0;  //确保截取以后最后一位为’\0’

   }

 

printf(sa);