vfwscanf() — Read Formatted Wide Character Data
Format
#include <stdarg.h>
#include <stdio.h>
int vfwscanf(FILE *stream, const wchar_t *format, va_list arg_ptr);
Language Level
ANSI
Threadsafe
Yes
Locale Sensitive
The behavior of this function might be affected by the LC_CTYPE and LC_NUMERIC categories of the current locale. The behavior might also be affected by the LC_UNI_CTYPE and LC_UNI_NUMERIC categories of the current locale if LOCALETYPE(*LOCALEUCS2) or LOCALETYPE(*LOCALEUTF) is specified on the compilation command. This function is not available when LOCALETYPE(*CLD) is specified on the compilation command. For more information, see Understanding CCSIDs and Locales.
Integrated File System Interface
See Wide Characters for more information.
Wide Character Function
This function is not available when SYSIFCOPT(*NOIFSIO) is specified on the compilation command.
Description
The vfwscanf()
function
reads wide data from a stream into locations specified by a variable
number of arguments. The vfwscanf()
function works
just like the fwscanf()
function,
except that arg_ptr points to a list of
arguments whose number can vary from call to call in the program.
These arguments should be initialized by va_start for
each call. In contrast, the fwscanf()
function can
have a list of arguments, but the number of arguments in that list
is fixed when you compile the program.
Each argument must be a pointer to a variable with a type
that corresponds to a type specifier in format-string. The format has
the same form and function as the format string for the fwscanf()
function.
Return Value
The vfwscanf()
function
returns the number of fields that were successfully converted and
assigned. The return value does not include fields that were read
but not assigned. The return value is EOF for an attempt to read at
end-of-file if no conversion was performed. A return value of 0 means
that no fields were assigned.
Example
#include <stdio.h>
#include <stdarg.h>
#include <wchar.h>
int vread(FILE *stream, wchar_t *fmt, ...)
{
int rc;
va_list arg_ptr;
va_start(arg_ptr, fmt);
rc = vfwscanf(stream, fmt, arg_ptr);
va_end(arg_ptr);
return(rc);
}
#define MAX_LEN 80
int main(void)
{
FILE *stream;
long l;
float fp;
char s[MAX_LEN + 1];
char c;
stream = fopen("mylib/myfile", "r");
/* Put in various data. */
vread(stream, L"%s", &s [0]);
vread(stream, L"%ld", &l);
vread(stream, L"%c", &c);
vread(stream, L"%f", &fp);
printf("string = %s\n", s);
printf("long double = %ld\n", l);
printf("char = %c\n", c);
printf("float = %f\n", fp);
}
/*************** If myfile contains ************************
**************** abcdefghijklmnopqrstuvwxyz 343.2 ***********
********************** expected output is: *********************
string = abcdefghijklmnopqrstuvwxyz
long double = 343
char = .
float = 2.000000
*/
Related Information
- fscanf() — Read Formatted Data
- fwprintf() — Format Data as Wide Characters and Write to a Stream
- fwscanf() — Read Data from Stream Using Wide Character
- scanf() — Read Data
- sscanf() — Read Data
- swprintf() — Format and Write Wide Characters to Buffer
- swscanf() — Read Wide Character Data
- vfscanf() — Read Formatted Data
- vfwscanf() — Read Formatted Wide Character Data
- vscanf() — Read Formatted Data
- vsscanf() — Read Formatted Data
- vswscanf() — Read Formatted Wide Character Data
- vwscanf() — Read Formatted Wide Character Data
- wprintf() — Format Data as Wide Characters and Print
- wscanf() — Read Data Using Wide-Character Format String
- <wchar.h>