snprintf函数使用总结

snprintf函数用于格式化字符串并将其拷贝到指定大小的目标字符串中。它最多拷贝size字节,包括终止符''。当源字符串长度小于、等于或大于目标字符串时,有不同的处理方式。成功时返回源串长度,不包含'';失败则返回负值。在实际使用中,应注意避免越界问题。
摘要由CSDN通过智能技术生成

【依赖头文件】

#include<stdio.h>

【函数原型】

int snprintf(char *str, size_t size, const char *format, …);

【函数参数】

str:目标字符串;size:拷贝字节数(Bytes); format:源字符串; …格式

【函数功能】

最多从源字符串format中拷贝size字节的内容(含字符串结尾标志’\0’)到目标字符串

The functions snprintf() write at most size bytes (including the terminating null byte (’\0’)) to str.

【返回值】

成功返回源串的长度(strlen, 不含’\0’)

失败返回负值

【例子及理解】

由于最多拷贝size个字节到目标字符串,那么通常目标字符串就设置成size大小就不会有越界问题

下面将目标字符串的长度设置为size大小,分别实验源串长度小于,等于,大于size的情况

【情形一】:源串小于目标字符串

实际上源串为:“123\0”,所以只将字符’1’,‘2’,‘3’, '\0’拷到了目标串,返回值为源串的strlen为3

  1 #include <stdio.h>
  2 #include <strings.h>
  3 #include <string.h>
  4 int main(void)
  5 {
      
  6     char a[10] = {
   '\0'};
  7     int i = 0;
  8     int ret = 0;
  9     memset(a, 1, sizeof(a));
 10     for(i = 0; i < 10; i++)
 11     {
      
 12         printf("a[%d] = %d\n",i,a[i]);
 13     }
 14     
 15     ret = snprintf(a, 10, "%d", 123);
 16     printf("ret = %d\n",ret);
 17     
 18     for(i = 0; i < 10; i++)
 19     {
   
 20         printf("a[%d] = %d\n",i,a[i]);
 21     }
 22     return 0;
 23 }   
root@ubuntu:/shiyan/shiyan265# gcc snprintf.c 
root@ubuntu:/shiyan/shiyan265# ./a.out
a[0] = 1
a[1] = 1
a[
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值