scanf函数录入字母和字符时注意:
- %d识别十进制数,在未取到值时,遇见空格、回车、tab时跳过,取其后面的值,直至取到十进制的数(跳过的字符,会从缓冲区中释放),遇见字母直接退出。
- %c遇见数字789,只取'7'。
- %s录入字符串
- 遇见空格、回车、tab等空白字符,视为终止(gets()遇见回车符终止)。
- 不读走缓冲区的回车符(gets()读走回车符,但是不作为字符串的一部分)。
- 缓冲区清理:getchar()、%*c
-
例子:
int age; char sex; double height; scanf("%d%c%lf",&age,&sex,&height); //若输入为:19W1.62 /*不能正确输入*/ // 19W1. 62 /*正确输入*/ //19W1. 62 /*正确输入*/ scanf("%d%*c%c%lf",&age, &sex, &height); //若输入为:19W1.62 /*正确输入*/ /* 19和W之间只能间隔一个空格 W和1.62之间允许多个空格 */ float a; int b; double c; scanf("%5f%3d%lf",&a,&b,&c); // 若输入为:-1.534859 // 则a=-1.53, b=485, c=9.0