int vsnprintf (char * s, size_t n, const char * format, va_list arg );

描述:

将格式化数据从可变参数列表写入大小缓冲区
如果在printf上使用格式,则使用相同的文本组成字符串,但使用由arg标识的变量参数列表中的元素而不是附加的函数参数,

并将结果内容作为C字符串存储在s指向的缓冲区中 (以n为最大缓冲区容量来填充)。

如果结果字符串的长度超过了n-1个字符,则剩余的字符将被丢弃并且不被存储,而是被计算为函数返回的值。
在内部,函数从arg标识的列表中检索参数,就好像va_arg被使用了一样,因此arg的状态很可能被调用所改变。
在任何情况下,arg都应该在调用之前的某个时刻由va_start初始化,并且在调用之后的某个时刻,预计会由va_end释放。

参数:

s

指向存储结果C字符串的缓冲区的指针。
缓冲区应至少有n个字符的大小。

n

在缓冲区中使用的最大字节数。
生成的字符串的长度至多为n-1,为额外的终止空字符留下空间。
size_t是一个无符号整数类型。

format

包含格式字符串的C字符串,其格式字符串与printf中的格式相同

arg

标识使用va_start初始化的变量参数列表的值。
va_list是在<cstdarg>中定义的特殊类型。

返回值:

如果n足够大,则会写入的字符数,不包括终止空字符。
如果发生编码错误,则返回负数。
注意,只有当这个返回值是非负值且小于n时,字符串才被完全写入。

/* vsnprintf example */
#include <stdio.h>
#include <stdarg.h>void PrintFError ( const char * format, ... )
{char buffer[256];va_list args;va_start (args, format);vsnprintf (buffer,256,format, args);perror (buffer);va_end (args);
}int main ()
{FILE * pFile;char szFileName[]="myfile.txt";pFile = fopen (szFileName,"r");if (pFile == NULL)PrintFError ("Error opening '%s'",szFileName);else{// file successfully openfclose (pFile);}return 0;
}

在这个例子中,如果文件myfile.txt不存在,则调用perror以显示类似于以下内容的错误消息:

Error opening 'myfile.txt': No such file or directory

vsnprintf用法解析相关推荐

  1. 四种Java线程池用法解析

    四种Java线程池用法解析 本文为大家分析四种Java线程池用法,供大家参考,具体内容如下 http://www.jb51.net/article/81843.htm 1.new Thread的弊端 ...

  2. mysql have_mysql having用法解析

    having的用法 having字句可以让我们筛选成组后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和having字句前.而 having子句在聚合后对组记录进行筛选. ...

  3. argparse.ArgumentParser()用法解析

    argparse.ArgumentParser()用法解析(https://blog.csdn.net/the_time_runner/article/details/97941409) https: ...

  4. sql中group by 和having 用法解析

    --sql中的group by 用法解析: -- Group By语句从英文的字面意义上理解就是"根据(by)一定的规则进行分组(Group)". --它的作用是通过一定的规则将一 ...

  5. python global和nonlocal用法解析

    这篇文章主要介绍了python global和nonlocal用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 global和nonlocal ...

  6. extern c用法解析

    extern "c"用法解析 字数1875 阅读38631 评论4 喜欢20 引言 C++保留了一部分过程式语言的特点,因而它可以定义不属于任何类的全局变量和函数.但是,C++毕竟 ...

  7. extern C的用法解析

    extern "C"的用法解析 2012-03-20 23:29 by Rollen Holt, 20231 阅读, 6 评论, 收藏, 编辑 1.引言 C++语言的创建初衷是&q ...

  8. vsprintf用法解析

    vsprintf用法解析 原创 swif_N_F 最后发布于2017-12-04 09:43:14 阅读数 1703 收藏 发布于2017-12-04 09:43:14 分类专栏: C C++ 知识点 ...

  9. python legb_Python变量作用域LEGB用法解析

    这篇文章主要介绍了Python变量作用域LEGB用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 闭包就是, 函数内部嵌套函数. 而 装饰器只 ...

最新文章

  1. ATT汇编leave指令
  2. 谷歌加载web workers问题
  3. 苹果开发者账号可以创建多少测试证书_ios苹果企业账号你所不知道的那些点
  4. linux php7 mongodb,CentOS 7下安装配置PHP7跟LAMP及MongoDB和Redis
  5. 信道效率以及信道的吞吐率
  6. Python三种方法统计4位自然数变为黑洞数6174所需次数分布
  7. 杭电计算机2012年硕士研究生笔试详解
  8. ubuntu 卸载openjdk 安装java8 安装之后提示Command ‘java‘ not found
  9. 工具使用-----Jmeter-脚本的录制
  10. readyread信号不触发_什么是示波器的触发,意外发现!
  11. Linux下rootkit病毒专杀工具,linux系统下检测rootkit工具
  12. DynamipsGUI的使用+vmware通讯建立
  13. 软件架构风格 - 虚拟机风格
  14. 什么是用户价值分层?
  15. 应用程序无法正常启动0xc000007b问题解决
  16. 香港渣打银行开户价格是多少?
  17. 无线路由器(WIFI)经常掉线断网的可能的原因
  18. Python_微博热搜保存数据库
  19. razer鼠标测试软件,Razer Viper Ultimate无线鼠标评测
  20. 新氧放弃私有化:曾由CEO金星发起 公司市值已不足1亿美元

热门文章

  1. “北航学堂”M2阶段postmortem
  2. CentOS 7系统安装配置图解教程
  3. 日期控件My97DatePicker的使用
  4. js基础之倒计时代码
  5. 直接打包的服务器组件,Vue-CLI-2.x全家桶架构,支持打包后自动部署到服务器构建案例...
  6. 服务器微信推送,开启服务器消息推送后收不到微信推送的数据
  7. Optional类 Optional介绍
  8. StringUtils 系列之 StringUtils.isBlank() 和 StringUtils.isNotBlank() 的区别、CollectionUtils.isEmpty()
  9. vue项目实现屏幕自适应
  10. 2018国内互联网公司薪资排行Top10!腾讯被逆袭,第一竟然是……