Chinaunix首页 | 论坛 | 博客
  • 博客访问: 846154
  • 博文数量: 133
  • 博客积分: 7117
  • 博客等级: 少将
  • 技术积分: 1846
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-16 21:30
文章分类

全部博文(133)

文章存档

2012年(1)

2011年(4)

2010年(2)

2009年(57)

2008年(69)

分类: LINUX

2008-10-07 09:45:08


int snprintf(char *restrict buf, size_t n, const char * restrict format, ...);
函数说明:最多从源串中拷贝n-1个字符到目标串中,然后再在后面加一个0。所以如果目标串的大小为n 

  的话,将不会溢出。

函数返回值:若成功则返回欲写入的字符串长度,若出错则返回负值。

Result1(推荐的用法)

#include
#include

int main()
{
  char str[10]={0,};
  snprintf(str, sizeof(str), "0123456789012345678");
  printf("str=%s\n", str);
  return 0;
}


root] /root/lindatest
$ ./test 
str=012345678



Result2:(不推荐使用)

#include
#include

int main()
{
  char str[10]={0, };
  snprintf(str, 18, "0123456789012345678");
  printf("str=%s\n", str);
  return 0;
}


root] /root/lindatest
$ ./test
str=01234567890123456



snprintf函数返回值的测试:

#include
#include

int main()
{
  char str1[10] ={0, };
  char str2[10] ={0, };
  int ret1=0,ret2=0;
  ret1=snprintf(str1, sizeof(str1), "%s", "abc");
  ret2=snprintf(str2, 4, "%s", "aaabbbccc");
  printf("aaabbbccc length=%d\n", strlen("aaabbbccc"));
  printf("str1=%s,ret1=%d\n", str1, ret1);
  printf("str2=%s,ret2=%d\n", str2, ret2);
  return 0;
}

[root] /root/lindatest
$ ./test 
aaabbbccc length=9
str1=abc,ret1=3
str2=aaa,ret2=9
阅读(1188) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~