![]() Chapter Contents |
![]() Previous |
![]() Next |
| vfscanf |
| Portability: | C99 |
| SYNOPSIS | |
| DESCRIPTION | |
| RETURN VALUE | |
| IMPLEMENTATION | |
| EXAMPLE | |
| RELATED FUNCTIONS | |
| SEE ALSO |
| SYNOPSIS |
#include <stdarg.h> #include <lcio.h> int vfscanf( FILE *f, const char *format, va_list arg );
| DESCRIPTION |
vfscanf reads formatted
input from the FILE designated by f according
to the format specified by the string format. Following the format in the
argument list is a pointer to a list of arguments, designated by arg, of type va_list as defined
in the header <stdarg.h>.
The string pointed to by format is in
the same form as that used by fscanf. See the fscanf description for detailed information concerning the
formatting conventions.
| RETURN VALUE |
vfscanf returns EOF if end of file (or an input error) occurs before any
values
are stored. If values are stored, it returns the number of items stored; that
is, the number of times a value is assigned to a member of the variable argument
list.
| IMPLEMENTATION |
vfscanf is functionally
equivalent to fscanf, except that the argument
list has been replaced by a variable argument list, va_list, as defined in the header <stdarg.h>.
| EXAMPLE |
#include <stdarg.h>
#include <lcio.h>
#include <stdlib.h>
int DoScan(FILE *f, const char *fmt, ...);
static char *lines[] = {
"147.8 pounds\n"
"51.7 miles\n",
"4.3 light-years\n",
"10000 volts\n",
"19.5 gallons\n"
};
main()
{
FILE *tmpf;
int i;
__binfmt float amount; // Declare a binary floating point number
char unit[20];
int count;
tmpf = tmpfile();
if (!tmpf)
{
puts("Couldn't open temporary file.");
exit(EXIT_FAILURE);
}
for (i = 0; i < sizeof(lines)/sizeof(char *); ++i)
{
fputs(lines[i], tmpf);
}
rewind(tmpf);
for(;;)
{
count = DoScan(tmpf, "%~bf %s", &amount, unit);
if (feof(tmpf)) break;
if (count < 2)
{
puts("Unexpected error in input data.");
exit(EXIT_FAILURE);
}
printf("amount = %.1~bf, units = \"%s\"\n", amount, unit);
}
fclose(tmpf);
}
int DoScan(FILE *f, const char *fmt, ...)
{
int n = 0;
va_list args;
va_start(args, fmt);
n = vfscanf(f, fmt, args);
va_end(args);
return n;
}
| RELATED FUNCTIONS |
vfprintf, fscanf, va_arg,
va_start, va_end
| SEE ALSO |
![]() Chapter Contents |
![]() Previous |
![]() Next |
![]() Top of Page |
Copyright © 2004 by SAS Institute Inc., Cary, NC, USA. All rights reserved.