vsnprintf用法解析
来源:互联网 发布:没卡怎么在淘宝买东西 编辑:程序博客网 时间:2024/06/13 10:14
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 open fclose (pFile); } return 0;}在这个例子中,如果文件myfile.txt不存在,则调用perror以显示类似于以下内容的错误消息:
Error opening file 'myfile.txt': No such file or directory
阅读全文
0 0
- vsnprintf用法解析
- vsnprintf函数用法
- snprintf vsnprintf的用法
- vsnprintf()可变参数的用法
- vsnprintf()可变参数的用法
- va_list 、vsnprintf 原理及用法
- va_list及vsnprintf的用法
- va_start,va_end,vsnprintf函数用法使用详解
- vsnprintf长度
- vsprintf 与 vsnprintf
- sprintf,snprintf,vsprintf,vsnprintf
- va_list和vsnprintf
- va_list和vsnprintf
- va_list和vsnprintf
- vsprintf and vsnprintf
- va_list和vsnprintf
- vsnprintf 打印变长参数
- vsnprintf和snprintf
- HTTP请求全过程
- BFPRT算法:(TOP-K问题)
- 1059. C语言竞赛(20)
- svm参数
- 51获取MPU6050数据并通过匿名上位机显示波形
- vsnprintf用法解析
- 数据结构C语言版赫夫曼树
- closures and variables
- 拓扑排序
- 关于TP框架隐藏index.php
- CentOS7 yum安装mongodb
- 在Kali linux下安装XAMPP并搭建DVWA遇到的问题及解决办法
- itop4412 uboot 学习详细记录(二丶Exynos4412 uboot的组成)
- Codeforces Round #449 (Div. 2) D(思维)