vwprintf错误处理(错误显示0)

时间:2017-05-04 08:12:06

标签: c++

我从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);
}

1 个答案:

答案 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!