Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1319758
  • 博文数量: 168
  • 博客积分: 2124
  • 博客等级: 大尉
  • 技术积分: 2590
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-16 23:51
文章分类

全部博文(168)

文章存档

2014年(6)

2013年(74)

2012年(71)

2011年(17)

分类: 系统运维

2012-06-27 01:36:27

 在看android源码的时候看到这个函数
 snprintf(path, sizeof(path), "%s/%s.%s.so",
                    HAL_LIBRARY_PATH1, id, prop);
hardware/libhardware/hardware.c文件中 
结合以下分析 即拷贝相应文件的地址到path

函数原型:int snprintf(char *dest, size_t n, const char *fmt, ...);

函数说明: 最多从源串中拷贝n-1个字符到目标串中,然后再在后面加一个0。所以如果目标串的大小为n的话,将不会溢出。
函数返回值: 若成功则返回存入数组的字符数,若编码出错则返回负值。

推荐的用法:
void f(const char *p)
{
    char buf[11]={0};
    snprintf(buf, sizeof(buf), "%10s", p); // 注意:这里第2个参数应当用sizeof(str),而不要使用硬编码11,也不应当使用sizeof(str)-1或10
    printf("%sn",buf);
}
阅读(3214) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~