欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C中scanf函数不太明显的易错点

程序员文章站 2022-03-22 15:55:57
...

 

#include <stdio.h>

int main(int argc, char const *argv[])
{
    int i;
    float x, y;
    scanf("%f%d%f", &x, &i, &y); // 12.3 45.6 789
    printf("x=%f, i=%d, y=%f\n", x, i, y); // 12.3 45 0.6
    
    return 0;
}

 

1)第一个数需要录入一个float,先正常录入12, 当遇到第一个点号时,会将点号匹配,然后继续找后面的数字,直到遇到空白符,最后在x中录入12.3。

 

2)第二个录入的是一个int类的值,因此遇到第二个点号时,会将点号回退至缓存区,然后将45录入i。

 

3)第三个录入的依然是个float,匹配的第一个符号即为一个点号,然后正常录入6,之后读到到最近的一个空白符,最终将0.6录入,剩余的数字留给下一次scanf调用。

 

相关标签: C