My database provides a text file with opening and closing formulas. "
set of formulas is very limited and will be easily implemented after identification. I try to use scanf to get the parameters, and I want to use the delimiter "
to provide a mechanism for scanf to fail.
In the example below, the last delimiter is ignored and information that the delimiter is not found is lost. How can I control if sscanf was able to match the entire string?
#include <stdio.h> #include <string.h> unsigned printIdentity(const char * formula){ unsigned e = 0, found = 0; double a, b; printf("-------------\n"); printf("INVESTIGATING: %s\n", formula); if( ( 2 == sscanf_s( formula, " \" X * %lf %lf \" ", &a, &b, sizeof( double ), sizeof( double ) ) ) ){ printf("MATCH: X * %lf + %lf\n", a, b); ++found; } if( ( 1 == sscanf_s( formula, " \" X * %lf \" ", &a, sizeof( double ) ) ) ){ printf("MATCH: X * %lf\n", a); ++found; } if( found != 1){ e += 1; printf("ERROR: %u formula types\n", found); } printf("-------------\n"); return e; } unsigned main( void ) { unsigned e = 0; e += printIdentity(" \"X*3.1\""); e += printIdentity(" \"X*3.2-4.2\""); e += printIdentity(" \"X*3.3+4.3\""); if( 0 != e ){ printf( "ERRORS: %2u\n", e ); } else{ printf( "all pass\n", e ); } return e; }
source share