snprintf strlcpy 写字符串

举报
CodeAllen 发表于 2021/10/29 22:27:02 2021/10/29
【摘要】 欢迎关注我的公众号是【CodeAllen】,关注回复【1024】获取精品学习资源 程序员技术交流①群:736386324 ,程序员技术交流②群:371394777     snprintf 原型为int snprintf(char *str, size_t size, const char *...

欢迎关注我的公众号是【CodeAllen】,关注回复【1024】获取精品学习资源
程序员技术交流①群:736386324 ,程序员技术交流②群:371394777    

snprintf

原型为int snprintf(char *str, size_t size, const char *format, ...)

功能: 将可变个参数(...)按照format格式化成字符串,然后将其复制到str中

 

可以有多个参数,依次写入第一个字符指针地址中

 

举例:将ENABLED写入high_impedance_standy

snprintf(high_impedance_standy, sizeof(high_impedance_standy), "ENABLED");

若成功则返回预写入的字符串长度,若出错则返回负值

 

例子2:


  
  1. static void
  2. _ptp_ipv4_to_string (uint32_t   ip_address,
  3.                      char     * ip_string)
  4. {
  5.     snprintf(ip_string, 32, "%d.%d.%d.%d",
  6.              ip_address         & 0xFF,
  7.              (ip_address >> 8)  & 0xFF,
  8.              (ip_address >> 16) & 0xFF,
  9.              (ip_address >> 24) & 0xFF);
  10.     return;
  11. }

 

与snprintf的返回值不同,sprintf的返回值是成功写入的字符串长度,此处需要谨慎处理!

 

strlcpy

C语言标准库函数strlcpy,是更加安全版本的strcpy函数,在已知目的地址空间大小的情况下,把从src地址开始且含有'\0'结束符的字符串复制到以dest开始的地址空间,并不会造成缓冲区溢出

函数原型声明:size_t strlcpy(char *dst, const char *src, size_t size)

头文件引用:#include <string.h>

功能: 在已知dest缓冲区大小并不会造成缓冲区溢出前提下,将src地址开始的字符串复制到以dest开始的地址空间

返回值:src字符串的大小

函数参数:参数dst为目的字符串开始的指针,src为源字符串的开始地址,参数size代表dst字符串的大小

 

文章来源: allen5g.blog.csdn.net,作者:CodeAllen的博客,版权归原作者所有,如需转载,请联系作者。

原文链接:allen5g.blog.csdn.net/article/details/116905055

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。