• scanf 函数笔记


    函数声明

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

    说明

    <返回值> scanf ("<格式化字符串>", <参数表>);
    

    返回值

    scanf 返回成功读入的变量个数,读到文件末尾或发生错误返回EOF。

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

    输入

    3 4
    3
    ^Z
    /*Windows系统终端下以^Z即Ctr+Z代表EOF*/
    

    返回值为 分别为 2 和 1

    又如

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

    输入

    ^Z
    

    返回值为 -1 ( -1 即 EOF 的值, 使用 printf 即可看到)

    格式化字符串

    格式

    %[width][modifiers]

    说明

    每个%分别对应控制参数表中每个变量的输入格式(%%除外, * 亦对应一个变量);
    除%引导的部分外,可加入任意输入格式有关的字符;
    width指定了在当前读取操作中读取的最大字符数,可省略;

    modifiers 参数类型 含义
    d char型,int型 读入一个十进制整数
    o int型,unsigned int型 读入一个八进制整数
    x,X int型,unsigned int型 读入一个十六进制整数
    u unsigned int型 读入一个十进制整数
    lld long long型 读入一个十进制整数
    llu unsigned long long型 读入一个十进制整数
    c char型,int型 读入单个字符,若 width 不为 1 ,则读取 width 个字符并存储在数组中连续位置。但末尾不会追加空字符。
    s char *型 读入一个字符串,读到空白符结束,末尾追加 ''
    f float型 读入一个十进制实数
    lf double型 读入一个十进制实数
    e,E float型,double型 用指数形式读入一个十进制实数
    g,G float型,double型 读入一个十进制小数
    p void *型 读入一个指针
    [ ] / 扫描字符集合
    % 不转换参数 读入一个%

    参数表

    参数表中形参的数量和类型与格式化字符串相适应,否则读入可能发生异常
    每个形参用逗号( , )隔开

    示例

    #include<stdio.h>
    int main()
    {
        double a, b;
        int d, e;
        char ch, c[100];
        
        scanf("%d%d", &d, &e);		/*两个数字之间应当用空白符分开*/
        scanf("(%d,%d)", &d, &e);
        scanf("(%d,%d)", &d, &e);
        scanf("(%d,%d)", &d, &e);
        scanf("%2d%d", &d, &e);
        
        scanf("%lf%lf", &a, &b);
        scanf("%4lf%lf", &a, &b);	/*注意小数点占一个字符*/
        
        scanf("%c", &ch);
        scanf("Hello World%s", c);
        scanf("%11c", c);
        
        return 0;
    }
    

    输入示例

    3 3						/*变量中值分别为 3 和 3*/
    (3,3)					/*变量中值分别为 3 和 3*/
    ( 3 , 3 )				/*多空格可以正常读入,为 3 和 3,但不规范*/
    (3,,3)					/*多逗号读入出错,第一个变量为 3 而第二个则无法成功读入*/
    2019					/*变量中值分别为 20 和 19*/
    
    3.14 3.14				/*变量中值分别为 3.14 和 3.14*/
    3.143.14				/*变量中值分别为 3.14 和 3.14*/
    
    a						/*变量中值为 'a' (实际储存为字符'a'的Ascii码)*/
    Hello WorldHelloWorld	/*变量中值为 HelloWorld (以''作为串结束符)*/
    Hello World				/*变量中值为 Hello World (没有串结束符,不能直接printf)*/
    

    by sdust weilinfox
    转载请注明原文地址:https://www.cnblogs.com/weilinfox/p/12238612.html

  • 相关阅读:
    为什么button在设置标题时要用一个方法,而不像lable一样直接用一个属性
    桥接模式(透传模式)和直驱模式
    vb.net版机房收费系统——教你七层架构(三)—外观模式
    Android 4.4 KitKat NotificationManagerService使用具体解释与原理分析(二)__原理分析
    poj-2758 Checking the Text
    一种感悟,为什么努力了确还是死了一地
    一位程序员的6年总结(转)
    主键生成策略
    Linux下的crontab定时执行任务命令详解
    win7 64下安装mysql-python报错的解决办法
  • 原文地址:https://www.cnblogs.com/weilinfox/p/12238612.html
Copyright © 2020-2023  润新知