在以字符n或i开头的字符串中搜索float时,sscanf返回1

时间:2013-04-20 00:19:19

标签: c scanf

在下面的代码中,我希望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

我错过了什么?

1 个答案:

答案 0 :(得分:2)

我的猜测是你的图书馆的状态机看到“n”作为“NaN”的可能开始而“i”作为“inf”的可能开始,它让它落入浮动转换代码。然后它立即退出,因为它无法完成解析并分配默认值。