📜  C / C++中的vwprintf()函数

📅  最后修改于: 2021-05-25 20:03:33             🧑  作者: Mango

C++中的vwprintf()函数用于将格式化的宽字符串写入stdout 。它将格式化的数据从变量参数列表打印到stdout。在内部,该函数从arg标识的列表中检索参数,就好像在其上使用了va_arg一样,因此arg的状态可能会被调用更改。宽字符串格式可能包含以开头的格式说明符,这些格式说明符由作为列表vlist传递的变量的值替换。
它在头文件定义
句法 :

int vwprintf( const wchar_t* format, va_list vlist )

参数:该函数接受四个强制性参数,如下所述:

  • 格式:指定指向以空终止的宽字符串的指针,该指针将被写入stdout
  • arg:指定一个值,该值标识用va_start初始化的变量参数列表

返回值:函数返回两个值,如下所示:

  • 成功后,将返回写入的字符总数。
  • 如果发生某些错误,则返回负数。

下面的程序说明了上述函数:
程序1:

// C++ program to illustrate the
// vwprintf() function
// for some english letter
  
#include 
using namespace std;
  
// function to print formatted
// data from variable argument list to stdout
void write(const wchar_t* format, ...)
{
    // hold the variable argument
    va_list arg;
  
    // A function that invokes va_start
    // shall also invoke va_end before it returns.
    va_start(arg, format);
  
    vwprintf(format, arg);
    va_end(arg);
}
  
// Driver code
int main()
{
    setlocale(LC_ALL, "en_US.UTF-8");
  
    wchar_t buffer[5][10] = { L"First", L"Second", L"Third",
                              L"Fourth", L"Fifth" };
    int k = 0;
  
    // print letters by calling write function
    wprintf(L"Some English Letters\n");
    for (wchar_t i = L'A'; i <= L'E'; i++) {
        write(L"%ls : %lc\n", buffer[k], i);
        k++;
    }
  
    return 0;
}
输出:
Some English Letters
First : A
Second : B
Third : C
Fourth : D
Fifth : E
// C++ program to illustrate the
// vwprintf() function
// for some Latin letters
#include 
using namespace std;
  
// function to print formatted
// data from variable argument list to stdout
void write(const wchar_t* format, ...)
{
    // hold the variable argument
    va_list arg;
  
    // A function that invokes va_start
    // shall also invoke va_end before it returns.
    va_start(arg, format);
  
    vwprintf(format, arg);
    va_end(arg);
}
  
// Driver code
int main()
{
    setlocale(LC_ALL, "en_US.UTF-8");
  
    wchar_t buffer[5][10] = { L"First", L"Second", L"Third",
                              L"Fourth", L"Fifth" };
    int k = 0;
  
    // print letters by calling write function
    wprintf(L"Some Latin Letters\n");
    for (wchar_t i = L'\u0021'; i <= L'\u0025'; i++) {
        write(L"%ls : %lc\n", buffer[k], i);
        k++;
    }
  
    return 0;
}
输出:
Some Latin Letters
First : !
Second : "
Third : #
Fourth : $
Fifth : %
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。