我从vwprintf
收到负值,而且我的信息没有打印出来。
文档说负返回值表示发生了错误,但我可以找到一种方法来查找错误代码或消息(errno
值未更改)。
我怎样才能找到错误?
我的代码:
void func(const wchar_t * fmt, ...) const
{
// fmt is not empty
errno = 0;
va_list args;
va_start(args, fmt);
int result = vwprintf(fmt, args); // result = -1
if(result < 0)
{
int isError = ferror(stdout); //isError = 1
int errorCode = errno; //errorCode = 0
}
printf("\n");
va_end(args);
}
答案 0 :(得分:0)
我无法重现任何错误;我希望你传递给函数的参数有问题。请参阅以下代码,该代码适用于我。希望以某种方式解决您的问题:
void func(const wchar_t * fmt, ...) {
va_list args;
va_start(args, fmt);
int result = vwprintf(fmt, args); // result = 19
va_end(args);
}
int main() {
func(L"%d:%d:%s\n",10,20,"Hello world!");
return 0;
}
输出:
10:20:Hello world!