sprintf函数用法

sprintf函数是一个变参函数,除了前面两个参数之外,后面的参数都不是类型安全的,它的代码实现如下:


int sprintf(char * buf, const char *fmt, ...)
{
va_list args;
int i;


va_start(args, fmt);

i=vsnprintf(buf, INT_MAX, fmt, args);

va_end(args);


return i;
}


它常用来连接字符串以及将整数打印到字符串中去,在连接字符串方面要比strcat灵活。如


str1 = "test";
str2 = "function";
sprintf(buf,“This is a %s string for sprintf %s",str1,str2);


在用sprintf直接连接两个字符串时,即sprintf(buf,"%s%s",str1,str2) 时要特别小心,因为有时我们的两段字符缓冲区,他们并不都是以'/0'结尾。比如许多从第三方库函数中返回的字符数组,从硬件或者网络传输中读进来的字符流,它们未必每一段字符序列后面都有个相应的'/0'来结尾。如果直接连接,不管是sprintf 还是strcat 肯定会导致非法内存操作,strncat 也要求第一个参数是个null结尾的字符串。可以使用sprintf(buf, "%.6s%.5s", str1, str2);的方法,""%.6s"中的6表示最多从str1中取6个字符。

在打印整数时sprintf(s, "%08X", 4567);表示以16进制打印整数4567,最多打印8个字符不足的部分前面补0。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值