石器时代LA官方

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 6503|回复: 0

[基础教材] linux下sprintf_s函数的替代

[复制链接]

1万

主题

491

回帖

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35504
石币
24669
发表于 2013-10-9 10:11:58 | 显示全部楼层 |阅读模式
windows平台下线程安全的格式化字符串函数sprint_s并非标准C函数,因此linux下无法使用,但可以使用snprintf函数代替。
  1. /*函数原型:*/
  2. int snprintf(char *dest, size_t n, const char *fmt, ...);

  3. /*函数说明: 最多从源串中拷贝n-1个字符到目标串中,然后再在后面加一个0。所以如果目标串的大小为n的话,将不会溢出。
  4. 函数返回值: 若成功则返回存入数组的字符数,若编码出错则返回负值。
  5. 推荐的用法:*/
  6. void f(const char *p)
  7. {
  8.     char buf[11]={0};
  9.     snprintf(buf, sizeof(buf), "%10s", p); // 注意:这里第2个参数应当用sizeof(str),而不要使用硬编码11,也不应当使用sizeof(str)-1或10
  10.     printf("%sn",buf);
  11. }
复制代码

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|石器时代LA官方

GMT+8, 2024-4-29 00:27 , Processed in 0.117173 second(s), 25 queries .

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表