The vwscanf() function is defined in <cwchar> header file.
int vwscanf( const wchar_t* format, va_list vlist );
The vwscanf() function reads the data from stdin and stores the values into the respective locations as defined by vlist.
Format Specifier | Description |
---|---|
% | Matches the literal % |
c | Matches a single character or multiple characters. If width is defined, matches exactly width characters. |
s | Matches consecutive non whitespace characters. If width is defined, matches exactly width characters or until first whitespace is found. |
[set] | Matches a non empty sequence of character from the given set of characters. If ^ is present at the beginning of set, then all the characters not in set are matched. |
d | Matches a decimal integer. |
i | Matches an integer. |
o | Matches an unsigned octal integer. |
X or x | Matches an unsigned hexadecimal integer. |
u | Matches an unsigned decimal integer. |
A or a, E or e, F or f, G or g | Matches a floating-point number. |
n | Returns the number of characters read so far. |
p | Matches an implementation defined character sequence defining a pointer. |
%[*][width][length]specifier
#include <cwchar>
#include <cstdarg>
#include <clocale>
void read( const wchar_t* format, ... )
{
va_list args;
va_start (args, format);
vwscanf (format, args);
va_end (args);
}
int main ()
{
setlocale(LC_ALL, "en_US.UTF-8");
wchar_t name[50];
wprintf(L"What is your name? ");
read(L" %ls", name);
wprintf(L"Hello %ls\n", name);
return 0;
}
When you run the program, a possible output will be:
What is your name? Götz Hello Götz