C中scanf函数不太明显的易错点
程序员文章站
2022-03-22 15:19:58
...
#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调用。
上一篇: 输入输出流的概念
下一篇: centos上Mariadb主从复制配置