Chinaunix首页 | 论坛 | 博客
  • 博客访问: 249125
  • 博文数量: 22
  • 博客积分: 1806
  • 博客等级: 上尉
  • 技术积分: 272
  • 用 户 组: 普通用户
  • 注册时间: 2006-11-16 20:10
文章分类

全部博文(22)

文章存档

2010年(6)

2009年(16)

分类: C/C++

2009-08-17 13:49:35

snprintf函数测试
 
另外,我们还可以利用snprintf函数来提前获取需要的内存空间大小,按如下格式调用:
ret = snprintf(NULL,0,"%s","test");
即设置第一二个参数分别为NULL和0,获得的ret就为实际需要的内存空间大小。这对于打印长度不可预知的字符串比较有效,便于我们合理分配空间,既不浪费又不产生截断。不过,这仅在C99下有效,在SUSv2标准下是无定义的,应该注意咯,O(∩_∩)O~。
 
测试代码:================================================================
#include
#include
int main()
{
 char desc[8];
 int ret;
 
 //为了查看是否有自动补\0情况,我们将desc设置非\0值。
 memset(desc, 'a', sizeof(desc));
 ret = printf("%s\n",desc);
 printf("%d=%s\n", ret, desc);
 //结果(出现乱码):18=aaaaaaaa堶
阅读(2822) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~