我的数据库提供了一个文本文件,其中包含打开和关闭"
分隔符公式。这组公式非常有限,一旦确定就很容易实现。我尝试使用 scanf 来获取参数,并且我想使用分隔符"
来提供 scanf 失败的机制。
在下面的示例中,最后一个分隔符被忽略,并且找不到分隔符的信息丢失。我如何控制 sscanf 是否能够匹配整个字符串?
#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;
}