Name
wscanf
Synopsis
Reads in formatted wide-character data from standard input
#include <stdio.h> #include <wchar.h> intwscanf
( const wchar_t * restrictformat
, ... );
The wscanf()
function is
similar to scanf()
, except that
its format string and input stream are composed of wide characters.
The conversion specifications are like those of scanf()
, except in the cases described in
Table 17-11.
Table 17-11. wscanf() conversion specifications that differ from scanf()
Conversion specification | Argument type | Remarks |
---|---|---|
%c | char * | Conversion as by |
%lc | wchar_t * | No conversion, no string terminator |
%s | char * | Conversion as by |
%ls | wchar_t * | No conversion |
Example
wchar_t perms[11];
wchar_t name[256];
unsigned int ownerid, groupid, links;
unsigned long size;
int count;
count =wscanf
( L"%10l[rwxsStTld-]%u%u%u%lu%*10s%*5s%256ls",
perms, &links, &ownerid, &groupid, &size, name );
wprintf( L"The file %ls has a length of %lu bytes.\n", name, size );
Assume that this code is executed with the following input
(produced by the Unix command ls -ln
—time-style=long-iso
) :
-rw-r--r-- 1 1001 1001 15 2005-03-01 17:23 überlänge.txt
The wscanf()
function call
in the example copies the string "-rw-r--r--"
to the array perms
, and assigns the integer values 1 to
the links
variable, 1,001 to
ownerid
and groupid
, and 15 to size
. Then it reads and discards the date
and time information, and copies the rest of the input string, up to
a maximum length of 256 wide characters, to the name
array. The resulting output
is:
The file ...
Get C in a Nutshell now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.