我明白两者之间的区别printf
, fprintf
, sprintf
等功能和vprintf
, vfprintf
, vsprintf
等函数与它们如何处理函数参数有关。但具体如何呢?真的有理由使用其中一种而不是另一种吗?我应该总是使用printf
因为这是在 C 中更常见的事情,或者是否有合理的理由选择vprintf
反而?
printf()
和朋友都可以正常使用。vprintf()
当你想写自己的东西时,朋友就适合你printf()
类函数。假设您想编写一个函数来打印错误:
int error(char *fmt, ...)
{
int result;
va_list args;
va_start(args, fmt);
// what here?
va_end(args);
return result;
}
你会发现你无法通过args
to printf()
, since printf()
需要多个参数,而不是一个va_list
争论。这vprintf()
然而,函数do take a va_list
参数而不是可变数量的参数,所以这里是完整的版本:
int error(char *fmt, ...)
{
int result;
va_list args;
va_start(args, fmt);
fputs("Error: ", stderr);
result = vfprintf(stderr, fmt, args);
va_end(args);
return result;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)