Chinaunix首页 | 论坛 | 博客
  • 博客访问: 120821
  • 博文数量: 7
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 410
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-05 12:45
文章分类
文章存档

2008年(7)

我的朋友

分类: C/C++

2008-05-29 17:32:33

内容见代码及输出。
代码:

17 int main(int argc,char **argv)
 18 {
 19 char buff1[256]={0};
 20 char buff2[256]={0};
 21 strncpy(buff1, "Hello, buffer 1!", 256);
 22 strncpy(buff2, "Hello, buffer 2!", 256);
 23 sprintf(buff1, "%s, does it work?", buff1);
 24 snprintf(buff2, 256, "%s, does it work?", buff2);
 25 printf("buffer 1: %s\n", buff1);
 26 printf("buffer 2: %s\n", buff2);
 27 return 0;
 28 }

输出:
buffer 1: Hello, buffer 1!, does it work?
buffer 2: , does it work?

阅读(1946) | 评论(3) | 转发(0) |
0

上一篇:busybox框架模拟

下一篇:没有了

给主人留下些什么吧!~~

chinaunix网友2008-12-24 10:57:42

作者的本意你们没有明白,在sprintf中,先使用buff1的值组成字符串,再把这个字符串写进buff1,所以buff1的初始内容被保留下来,在snprintf中,先把buff2的内容清空,再把组成的字符串写进buff2,这样如果想使用buff2的初始内容就达不到目的。当然如果不使用buff1和buff2的初始内容,结果就是一样的。

chinaunix网友2008-08-15 13:31:49

输出是一样的,举例不恰当

chinaunix网友2008-07-04 14:38:51

请作者证明结果正确再发!