在下面的代码中,我希望sscanf返回0,但它返回1并将0.000000分配给float变量x。当字符串以字母i开头但没有其他字母时,会发生相同的行为。
void main() {
int ss_return;
float x;
char str_to_sscanf[] = "noduh";
ss_return = sscanf( str_to_sscanf, "%f", &x );
printf( "\n\nThe word passed to sscanf is %s", str_to_sscanf );
printf( "\n\nWhen looking for a float, sscanf returned %d", ss_return );
printf( "\n\nand assigned %f to x (declared as float)", x );
printf( "\n\nWHY DID sscanf NOT RETURN ZERO????" );
}
该程序的输出是:“两个奇怪的字符”duh
我错过了什么?
答案 0 :(得分:2)
我的猜测是你的图书馆的状态机看到“n”作为“NaN”的可能开始而“i”作为“inf”的可能开始,它让它落入浮动转换代码。然后它立即退出,因为它无法完成解析并分配默认值。