vnprintf (函数vfprintf )函数2017年12月10日10:15:34我记得北海有墓碑。 阅读数: 4066
版权声明:本文为博客原创文章,未经博客许可不得转载。 3359 blog.csdn.net/QQ _ 37824129/article/details/78763286
注:部分彩色文本是转发者自己添加的,仅供参考。
vsnprintf函数
头文件: #include stdarg.h
函数原型: intvsnprintf(char*str,size_tsize,const char *format,va_listap );
函数说明:将可变参数格式化为字符数组并输出
参数:输出str的数组、调整大小、防止越界、格式参数、使用ap可变参数列表函数
例如:
#include stdio.h
#include stdarg.h
voidtest(constchar*format,
入主(void ) )。
{
test('%d_%s ',6,' abc ' );
返回0;
}
voidtest(constchar*format,) /此函数的任务是完成程序员希望输入的n个参数(格式6、字符串' abcd '、小数5.6等)
//根据相应的格式化字符的格式(例如%d_%s_%f )一次存储在一个字符阵列char buff[4069]中
//用printf(%s(n ),buff )打印这些字符。 例如6_abcd_5.6,
{
char buf[4069];
va_list list;
va_start(list,format );
vsnprintf(buf,4069,format,list );
va_end(list;
printf(%s(n ),buf );
}
输出结果为6_abc
vfprintf (函数
头文件: #include stdarg.h
函数原型: intvfprintf(file*stream,const char *format,va_list arg );
函数说明: fprintf ()根据参数format字符串转换数据、设置数据格式,并将结果输出到参数stream指定的文件中,直到出现字符串结尾((0) )。
c语言printf族函数的成员:
#includestdio.h
intprintf(constchar*format,...);//输出到标准输出
intfprintf(FILE*stream,constchar*format,...);//输出到文件
intsprintf(char*str,constchar*format,...);//输出到字符串str中
intsnprintf(char*str,size_tsize,constchar*format,...);
//按size大小输出到字符串str中
以下函数的功能与上面的一对一对应相同,但在函数调用时,将上面对应.的每个变量替换为va_list调用。 调用函数前的ap是在va_start ()宏中动态检索的,无法使用va_end ) (ap )释放以前定义的指针。 va_start(list,format )是通过定义参数指针ap和参数之前的固定参数名称来获取要输入的第一个参数的地址即调用函数test (% d _ % s )、6、' abc ); 的第一个参数6是堆栈中的存储器地址。 顺便提及,“%d_%s”是参数列表的前一个参数,在定义了对应的函数test时,在voidtest(const char *format,)的constchar*format项中,即在3个点函数的返回值是这些字符的数量。 (因为vsnprintf返回值是int类型,所以int i=vsnprintf ) )。 由于此函数使用定义的字符数组buff[],因此函数vsnprintf ()可以使用printf )“%s”,buff打印程序员输入的参数的内容(实际上用打印程序员输入的逗号分隔) 这里的函数VSNprintf ) )有点vsn ) )
#includestdarg.h
intvprintf(constchar*format,va_listap);
intvfprintf(FILE*stream,constchar*format,va_listap);
intvsprintf(char*str,constchar*format,va_listap);
intvsnprintf(char*str,size_tsize,constchar*format,va_listap);