scanf()函数功能:
通过键盘将数据输入到变量中!
scanf()函数用法:
用法一: scanf("输入控制符", 输入参数);
功能: 将从键盘输入的字符转化为输入控制符所规定格式的数据,然后存入以输入参数的值为地址的变量中。
scanf("%d", &i)
1、%d 键盘上输入的是字符,必须使用%d,把输入的字符转换为十进制整数。
2、&i 取地址运算符&,把输入的字符经转化为整数后存到&i这个地址对应的变量i中。
用法二:scanf("非输入控制符 输入控制符", 输入参数);
非输入控制符必须 !!!原样输入!!!
例如:scanf("%d, %daaa", &a, &b);
输入时必须输入"6,8aaa"格式才可以,空格倒无所谓。
例子1:
#include<stdio.h>int main(void)
{
int i;
scanf("mt%d", &i);
printf("%d\n", i);
return 0;
}
1、输入123 -> 错误输出 -85……
2、输入mt123 -> 123
3、输入mt123n -> 123
用法三:一次给键盘输入多个变量
scanf("%d %d %d", &i, &j, &k);
:
用法四:高质量scanf
应该在输入前有提示。
printf(请输入……"");
scanf("%d", &a);
如何用scanf编写高质量代码
1、使用scanf之前最好先使用printf提示用户以什么样的方式来输入。
2、scanf中尽量不要使用非输入控制符,尤其是不要用'\n'。、
eg: scanf("%d\n", &a);
必须输入"8\n"
3、应编写代码对用户的非法输入做适当的处理。
char ch;
while('\n' != (ch = getchar()))
{
continue;
}
例子2:
#include<stdio.h>
int main(void)
{
int a, c;
char ch;
scanf("%d\n", &a);
printf("%d\n", a);
while('\n' != (ch = getchar()))
{
continue;
}
// 加上面代码可解决此问题,功能是把输入的字符全部接收,
// 也即输入的字符应经被清空,可进行下次输入。
scanf("%d", &c);
printf("%d\n", c);
}
若直接输入99m,则a = 99, c = 垃圾值
这是因为a把99m中的99当做有效值接收,而c从m开始接收,出错。
scanf中没有被接收的值不会自动清除,而是保留等下个变量再来接收。