Scan input from a string
#include <stdio.h>
#include <stdarg.h>
int vsscanf( const char* in_string,
const char* format,
va_list arg );
libc
The vsscanf() function scans input from the string designated by in_string, under control of the argument format. The format string is described under the description of the scanf() function.
The vsscanf() function is equivalent to the sscanf() function, with a variable argument list replaced with arg, which has been initialized using the va_start() macro.
EOF when the scanning is terminated by reaching the end of the input string. Otherwise, the number of input arguments for which values were successfully scanned and stored is returned.
#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
void sfind( char* string, char* format, ... )
{
va_list arglist;
va_start( arglist, format );
vsscanf( string, format, arglist );
va_end( arglist );
}
int main( void )
{
int day, year;
char weekday[10], month[12];
sfind( "Monday June 28 1999",
"%s %s %d %d",
weekday, month, &day, &year );
printf( "\n%s, %s %d, %d\n",
weekday, month, day, year );
return EXIT_SUCCESS;
}
| Safety: | |
|---|---|
| Cancellation point | No |
| Interrupt handler | Read the Caveats |
| Signal handler | Read the Caveats |
| Thread | Yes |
It's safe to call vsscanf() in an interrupt handler or signal handler if the data isn't floating point.
fscanf(), scanf(), sscanf(), va_arg(), va_end(), va_start(), vfscanf()