• [C] scanf


    scanf 函数称为格式输入函数,即把用户键盘输入的内容保存到指定的变量中。

    scanf 函数签名

    scanf("格式控制字符串", 变量地址列表)

      scanf 函数是一个标准库函数,函数原型位于 <stdio.h> 中。与 printf 函数相同,C语言允许隐式使用 scanf 函数,即可以不提前包含 <stido.h> 头文件。如果隐式使用 scanf 或 printf 函数,编译时系统会发出隐式调用警告。

      scanf 不能在控制台回显非格式化占位符字符串,也就是说不能在控制台显示输入提示。

      scanf 第一个参数 “格式控制字符串” 可以分为两部分,一部分为格式占位符,另一部分为变量分隔符。

    格式占位符

    %[*][输入数据宽度][长度]类型

      scanf 支持输入的类型如下:

        1. d - 十进制整数

        2. o - 八进制整数

        3. x - 十六进制整数

        4. u - 无符号十进制整数

        5. f 或 e - 小数形式或指数形式的实型数

        6. c - 单个字符

        7. s - 字符串

    变量分隔符

      变量分隔符是指在输入多个变量数据时用于分隔输入数据的非格式占位符。例如:

    scanf("%dA%d", &a, &b)
    
    在控制台输入:
    123A456 结果为:a
    = 123, b = 456

      

      其中 scanf 第一个参数中的 A 就是一个变量分隔符。如果 scanf 第一个参数中没有指明变量分隔符,那么系统默认空格符、Tab符或回车符作为分隔符,C编译器在遇到这三个字符或者非法字符时,就认为输入的数据结束。例如:

    scanf("%d%d", &a, &b);
    
    在控制台输入:
    123 456
    
    或者
    123
    456
    
    结果都是:a = 123, b = 456

    scanf 函数实例

    1. 一般用法

    int main(void) {
        int a, b;
        printf("Input a, b
    ");
        scanf("%d%d", &a, &b);
        printf("a=%d, b=%d
    ", a, b);
        return 0;  
    }

      输入与输出:

    $ ./a.out 
    Input a, b
    123 456
    a=123, b=456

    2. 使用 * 符号表示跳过该输入值

      将上例代码修改为:

    scanf("%d%*d%d", &a, &b)

      输入与输出:跳过第二个输入值 456, 将第三个输入值 789 赋给了变量 b。

    $ ./a.out 
    Input a, b
    123 456 789
    a=123, b=789

    3. 格式占位符中限定数据宽度

      将上例代码修改为:

    scanf("%4d%4d", &a, &b);

      输入与输出:

    $ ./a.out 
    Input a, b
    12345 56789
    a=1234, b=5
    
    $ ./a.out 
    Input a, b
    123456789
    a=1234, b=5678

      第一次输入时,C程序直接截取了 12345 的前四位赋给了变量 a,然后从剩余的 5 56789 中准备再截取四位赋给变量 b,但在第二个位置遇到了空格符,之前说过C程序是默认空格符为数据分隔符,因此C程序认为该变量数据输入结束,将 5 赋给了b。

      

  • 相关阅读:
    Windows 8的语音识别
    硬件驱动程序的知识点滴
    怎么将一张100KB以上大小的电子图片压缩成30KB以内
    Hadoop概念学习系列之Hadoop新手学习指导之入门需知(二十)
    Hadoop概念学习系列之Hadoop、Spark学习路线(很值得推荐)(十八)
    研究生,别再玩了,你玩不起!
    redis源代码解读之内存管理————zmalloc文件
    线段树之入门篇
    C#托付和事件
    dlmalloc 2.8.6 源代码具体解释(6)
  • 原文地址:https://www.cnblogs.com/ifantastic/p/3902625.html
Copyright © 2020-2023  润新知