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

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

#include<stdio.h>

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<stdio.h>

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<stdio.h>

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<stdio.h>

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<stdio.h>

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<stdio.h>

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'

5 C语言-scanf基本用法相关推荐

  1. c语言scanf s用法,C语言scanf与scanf_s

    C语言scanf与scanf_s0 我打编译器是microsoft visual studio 2005,我的源程序如下,注意注释的地方,就是scan函数中的scanf_s函数,程序运行正常,但是当输 ...

  2. c语言scanf函数用法完全攻略,C语言scanf函数用法完全攻略

    本节介绍输入函数 scanf 的用法.scanf 和 printf 一样,非常重要,而且用得非常多,所以一定要掌握. 概述 scanf 的功能用一句话来概括就是"通过键盘给程序中的变量赋值& ...

  3. C语言scanf函数用法详细解释!!!

    函数名: scanf  功 能: 执行格式化输入  用 法: int scanf(char *format[,argument,...]); scanf()函数是通用终端格式化输入函数,它从标准输入设 ...

  4. c语言编译中scanf命令,C语言scanf的用法

    scanf()是C语言中的一个输入函数.与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include .(在有一些实现中,printf函数与scanf函数 ...

  5. C语言scanf函数用法详细解释!

    函数名: scanf 功 能: 执行格式化输入 用 法: int scanf(char *format[,argument,...]); scanf()函数是通用终端格式化输入函数,它从标准输入设备( ...

  6. c语言中数组部分输入赋值,c语言scanf对数组赋值

    c语言动态数组赋值,,c语言结构体数组赋值,c语言scanf对数组赋值 c语言数组动态赋值,<手把手教你学51单片机-C语言>之六 中断与数码管动态显示,c语言结构体数组赋值,c语言sca ...

  7. 牛客网循环输入输出测试——C语言scanf和printf用法

    在实际的编程中需要自己写出完整的程序,预留好输入的接口,使用while循环接收多个测试用例,C语言在输出时printf要用换行"\n". 字符串输入输出问题见博客:牛客网字符/字符 ...

  8. c语言scanf中 作用,c语言中scanf的用法

    c语言中scanf的用法的用法你知道吗?下面小编就跟你们详细介绍下c语言中scanf的用法的用法,希望对你们有用. c语言中scanf的用法的用法如下: printf和scan函数的使用方法 一 pr ...

  9. C语言 qsort的用法 模拟EXCEL排序

    C语言 qsort的用法 模拟EXCEL排序 题目 Excel可以对一组记录按任意指定列排序.现请编写程序实现类似的功能. 输入 输入的第一行包含两个正整数N(<= 10^5)和C,其中N是记录 ...

  10. c语言写程序if else,if else用法详解,C语言if else用法完全攻略

    if else 语句是一种选择结构,可以让代码选择执行.所谓选择执行,就是"某些代码可能执行,也可能不执行,有选择地执行某些代码". if 的最简单用法 if最简单的格式是: if ...

最新文章

  1. 如何从MP4视频文件中抽取MP3音频?
  2. CSS兼容性(IE和Firefox)技巧大全
  3. Swift: 可变参数
  4. Spring中@Import注解的作用和使用
  5. [Baltic2009]Radio Transmission
  6. 开发十年的程序员论:零基础自学Python,学习路径是什么?深思
  7. Android Studio中关于9-patch格式图片的编译错误
  8. 如何使用 ABAP 手动解析 multipart/form-data 格式的数据
  9. JavaScript 高级——详谈面向对象
  10. 如何导入maven源文件_如何正确导入maven项目到eclipse?
  11. Logstash入门简介
  12. 是否有任何python库可以从自然语言中解析日期和时间?
  13. 监管大屏系统_“警视” 警务情指一体大屏可视化决策系统
  14. javax.naming.NameNotFoundException: QueueConnectionFactory not bound
  15. pe修改rpc服务器不可用,电脑rpc服务器不可用,教你电脑rpc服务器不可用怎么解决...
  16. 字母c语言ascii码,c语言ascii码对照表
  17. node.js以及读取写入文件
  18. 使用GCJ编译Java程序供Matlab调用Java对象方法实践
  19. 反超苹果,微软重回全球市值第一!
  20. 打开office报错提示向程序发送命令时出现问题

热门文章

  1. windows上编译,使用libtorrent
  2. js 格式化UTC日期
  3. 分享一个xshell7的绿色版
  4. mac 无法对计算机进行更改,解析深度技术win10 MAC不能修改的原因和解决成功的技巧...
  5. oracle性质是渐进正态性,基于惩罚函数的回归量变选择方法.doc
  6. pb 数据窗口设置操作
  7. 2022电大国家开放大学网上形考任务-健康评估非免费(非答案)
  8. 微信小程序快手小店登录
  9. [转] 制作PPT的全过程,存着有用
  10. 【电脑录制屏】如何使用bandicam录游戏 设置图文教程