首页 > 编程语言 >【c&c++】C语言snprintf()函数用法

【c&c++】C语言snprintf()函数用法

时间:2023-02-10 10:59:07浏览次数:50  
标签:snprintf c++ C语言 char str 字符串 path size

一、函数原型

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

二、函数介绍


将可变个参数(...)按照format格式化成字符串,然后将其复制到str中
(1) 如果格式化后的字符串长度 < size,则将此字符串全部复制到str中,并给其后添加一个字符串结束符('\0');
(2) 如果格式化后的字符串长度 >= size,则只将其中的(size-1)个字符复制到str中,并给其后添加一个字符串结束符('\0'),返回值为欲写入的字符串长度 。
三、运行实例

#include <stdio.h>
 
int main () {
  char a[16];
  size_t i;
  char path[216] = {0};
  i = snprintf(a, 13, "%012d", 12345);  // 第 1 种情况
  printf("i = %lu, a = %s\n", i, a);    // 输出:i = 12, a = 000000012345
 
  i = snprintf(a, 9, "%012d", 12345);   // 第 2 种情况
  printf("i = %lu, a = %s\n", i, a);    // 输出:i = 12, a = 00000001
 
  i = snprintf(path, sizeof(path), "%s/%s.%s.so","/system/lib64/hw/love", "tanghanyue", "default");
  printf("i = %lu, path = %s\n", i, path);    // 输出:i = 43, path = /system/lib64/hw/love/tanghanyue.default.so
 
  return 0;
}

运行结果:
wfh@HOST8888:~$ ./snprintf
i = 12, a = 000000012345
i = 12, a = 00000001
i = 43, path = /system/lib64/hw/love/tanghanyue.default.so
【参考连接】

GCC-C代码编译过程

   

标签:snprintf,c++,C语言,char,str,字符串,path,size
From: https://www.cnblogs.com/opensmarty/p/17108141.html

相关文章

  • C语言填空:减损法求最大公约数
    #include<stdio.h>//<<九章算术>>更相减损法:可以用来求两个数的最大公约数,即“可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也。//以等数约之。///第......
  • c++17区域锁std::scoped_lock
    template<class...MutexTypes>classscoped_lock;(sincec++17)作用同时持有一个或多个Mutex的RAII机制的mutex包装器,可以一次性获取多个mutex,避免发生死锁。当......
  • C语言填空:最大公约数
    //求最大公约数#include<stdio.h>main(){intm,n,i,k;scanf("%d,%d",【1】);k=【2】?m:n;for(i=k;i>=1;i--){if(【3】)......
  • C语言填空:1-5阶乘和
    #include<stdio.h>//计算1到5的阶乘和,并将结果保存到变量s中main(){inta,s=【1】,b=【2】;for(a=1;a<=【3】;a++){b=b*a;s【4】=......
  • C语言填空:求和 逗号表达式为条件
    #include<stdio.h>//求s=1+2+3+4+...+100main(){inta=101,【1】;while(【2】,a>0)s【3】=【4】;printf("s=%d",s);getchar();}#inclu......
  • C语言填空:程序段后变量的值
    #include<stdio.h>//执行程序段后,变量s的值为()main(){inta=10,s=0;do{s=s+a;a++;}while(a<1);getchar();}#inclu......
  • C语言填空:结束后变量的值
    #include<stdio.h>//执行下列程序段后,y的值是(),x的值是(),m的值是(),n的值是()main(){intx,y,z,m,n;m=10;n=5;x=(--m==n++)?--m:++n;y=m++;pri......
  • C语言填空:最大值函数
    #include<stdio.h>//求两个数中的最大值intmax(inta,intb){return【1】;}main(){inta,b;scanf("%d%d",【2】);printf("max=%d",【3】)......
  • C语言--变量的作用域与生命期
    局部变量--函数内部定义的变量(隶属于当前函数)--只能在当前函数中访问全局变量--全局范围内的变量(不特定隶属于任意一个函数)--可以在任意函数中访问同......
  • 第一章_C语言快速入门
    目录1C语言快速入门1.1信息在计算机中的表示1.2C语言快速入门1C语言快速入门1.1信息在计算机中的表示√1.2C语言快速入门第一个C++程序#include<iostream>#i......