5 C语言-scanf基本用法

5 C语言-scanf基本用法,第1张

scanf():通过键盘将数据输入到变量中,初级使用中一般有以下几种用法及常见错误:

用法一:scanf("输入控制符",输入参数);
功能:将从键盘输入的字符(字符!字符!字符!)转化为输入控制符所规定格式的数据,然后存入“输入参数”的内存空间中(取地址符的意义)

#include

int main()
{
    int i;
    scanf("%d",&i);
    printf("i=%d\n",i);
    
    return 0;
}

/*vs2010测试结果
----------------------------------------
123
i=123

m123
i=-858993460

123x
i=123
----------------------------------------
*/

用法二:scanf("非输入控制符 输入控制符",输入参数);
功能:将从键盘输入的字符(字符!字符!字符!)转化为输入控制符所规定格式的数据,然后存入“输入参数”的内存空间中(取地址符的意义),但在输入控制符前加了非输入控制符
【注意】键盘输入时,非输入控制符必须原样输入


#include

int main()
{
    int i;
    scanf("m%d",&i);
    printf("i=%d\n",i);
    
    return 0;
}

/*vs2010测试结果
----------------------------------------
123
i=-858993460

m123
i=123

m123x
i=123
----------------------------------------
*/

用法三:一次给多个变量键盘赋值
#include

int main()
{
    int i,j;
    scanf("%d %d",&i,&j);
    printf("i=%d,j=%d\n",i,j);
    
    return 0;
}

/*vs2010测试结果
----------------------------------------
12 34
i=12,j=34

12

34
i=12,j=34
----------------------------------------
*/

面对用户不知如何正确输入多个值时,以上代码可进行以下改进,及用printf加一行输入样式提示信息
#include

int main()
{
    int i,j;
    printf("请输入两个数中间以空格隔开:\n");  //提示行
    scanf("%d %d",&i,&j);
    printf("i=%d,j=%d\n",i,j);
    
    return 0;
}
/*vs2010测试结果
----------------------------------------
请输入两个数中间以空格隔开:
12 34
i=12,j=34
----------------------------------------
*/

用法四:非法输入与用while屏蔽非法输入
//在输入多个变量值时,输入i时会误碰键盘导致非法输入,如以下代码,字符12输入后,其后面的字符均为非法输入,若不进行处理,会将非法输入赋值给变量j
#include

int main()
{
    int i;
    int j;

    scanf("%d",&i);
    printf("i=%d\n",i);    

    scanf("%d",&j);
    printf("j=%d\n",j);
    
    return 0;
}
/*vs2010测试结果
--------------------------------------------------------
12ffghgdfhdf
i=12
j=-858993460
--------------------------------------------------------
*/

将以上代码改进如下,在代码中间加入一段while循环语句,可解决i的误输入问题
#include

int main()
{
    int i;
    char ch;
    int j;

    scanf("%d",&i);
    printf("i=%d\n",i);    

    while((ch=getchar())!='\n')    //屏蔽i输入时因误碰键盘导致的非法输入
         continue;

    scanf("%d",&j);
    printf("j=%d\n",j);
    
    return 0;
}
*vs2010测试结果
--------------------------------------------------------
12sfsdgsgdsgsdfgsdfaf34
i=12
34
j=34
--------------------------------------------------------
*/

【小结】如何使用scanf编写出高质量代码
1.使用scanf之前最好先使用printf提示用户以何种形式输入
2.scanf中尽量不要使用非输入控制符,尤其是'\n'

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/738192.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-28
下一篇 2022-04-28

发表评论

登录后才能评论

评论列表(0条)

保存