• scanf( )函数的格式化输入


    函数原型:

    int scanf (const char * restrict format, ...)

    1. 控制字符串和参数列表

    跟printf( )一样,scanf( )使用控制字符串和参数列表。但和printf( )的区别是,printf( )函数使用变量名、变量和表达式;而scanf( )函数使用指向变量的指针

    scanf( )函数所用的转换说明字符与printf( )所使用的几乎完全相同。主要区别在于printf( )把%f、%e、%E、%g和%G同时用于float类型和double类型,而scanf( )只把它们用于float类型,而用于double类型时要求使用l修饰符。

    scanf的转换说明符
    转换说明符 意义
    %c 把输入解释成一个字符
    %d 把输入解释成一个有符号十进制整数
    %e,%f,%g,%a 把输入解释成一个浮点数(%a是C99标准)
    %E,%F,%G,%A 把输入解释成一个浮点数(%A是C99标准)
    %i 把输入解释成一个有符号十进制整数
    %o 把输入解释成一个有符号八进制整数
    %p 把输入解释成一个指针(一个地址)
    %s 把输入解释成一个字符串:输入的内容以第一个非空白字符作为开始,并且包含直到下一个空白字符的全部字符
    %u 把输入解释成一个无符号十进制整数
    %x,%X 把输入解释成一个有符号十六进制整数

    %a,%A使用p-计数法表示浮点数:整数部分使用十六进制数表示,小数部分使用2的幂次表示。

    scanf的转换修饰符
    修饰符 意义
    * 滞后赋值
    digit(s) 最大字段宽度:在达到最大字段宽度或者遇到第一个空白符时停止对输入项的读取
    hh 把整数读作signed char或unsigned char
    ll 把整数读作long long或unsinged long long(C99)
    h,l或L

    如果没有修饰符,d、i、o和x指示int类型,而e、f和g指示float类型。
    修饰符h使d、i、o、x和u变更为对应的short类型,使e、f和g变更为指示double类型;
    L使e、f和g变更为指示long double类型

    2. 格式字符串中的常规字符

    scanf( )函数允许您把普通字符放在格式字符串中。除了空格字符之外的普通字符一定要与输入字符串准确匹配。例如,如果把逗号放在两个说明符之间:

    scanf("%d, %d", &n, &m);

    则输入必须为如下形式才会被接受:

    88, 121

    格式字符串中的空格意味着跳过下一个输入项之前的任何空白符(但必须要有空白符,不可以没有)。

    除了%c之外的说明符会自动跳过输入项之前的空格,所以scanf("%d%d", &n, &m)与scanf("%d %d", &n, &m)的行为是相同的。

    但要注意%c会读取输入中的空白符,所以scanf("%c", &n)与scanf(" %c", &n)的行为是不同的。前者会读取输入中遇到的第一个(任意)字符,后者会先跳过空白符,读取遇到的第一个非空白字符。

    3. *修饰符——滞后赋值

    在scanf( )中的*和在printf( )中的含义截然不同。当把它放在%和说明符字母之前时,它使函数跳过相应的输入项目。程序示例:

    /* skip.c -- 跳过输入的头两个整数 */
    #include <stdio.h>
    
    int main(void)
    {
        int n;
        printf("Please enter three integers: \n");
        scanf("%*d %*d %d", &n);
        printf("The last integer was %d\n", n);
    
        return 0;
    }
    

    输入:2004 2005 2006

    输出:2006

    4. 返回值

    scanf( )函数返回成功读入的项目的个数。如果它没有读取任何项目,会返回值0。当它检测到“文件结尾”时,会返回EOF。

  • 相关阅读:
    首次调用u8api遇到的问题总结
    为datagridview添加自定义按钮
    我对数据库索引的初步了解
    ObjectARX 常见编译错误解决方式记录
    手动修改Visual Studio 版本互转工具
    [经验] FAS 20号指令的深入研究
    Object ARX 统一设置所有图层的RGB颜色
    ARX 选择集获得所有图形 遍历 实例 备忘
    ObjectARX2010 学习笔记002:读取已经存在的DWG文件中的内容
    利用编译时的全局声明对抗反编译
  • 原文地址:https://www.cnblogs.com/qwertWZ/p/2868888.html
Copyright © 2020-2023  润新知