scanf的用法

scanf()函数功能:


    通过键盘将数据输入到变量中!


scanf()函数用法:


用法一: scanf("输入控制符", 输入参数);

功能:   将从键盘输入的字符转化为输入控制符所规定格式的数据,然后存入以输入参数的值为地址的变量中。

scanf("%d", &i)
1、%d  键盘上输入的是字符,必须使用%d,把输入的字符转换为十进制整数。
2、&i  取地址运算符&,把输入的字符经转化为整数后存到&i这个地址对应的变量i中。


用法二:scanf("非输入控制符 输入控制符", 输入参数);


功能:将从键盘的字符转化为输入控制符所规定格式的数据,然后存入以输入参数的值为地址的变量中。

非输入控制符必须   !!!原样输入!!!

例如:scanf("%d, %daaa", &a, &b);
输入时必须输入"6,8aaa"格式才可以,空格倒无所谓。


例子1:

#include

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

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中没有被接收的值不会自动清除,而是保留等下个变量再来接收。

你可能感兴趣的:(C,c)