zoukankan      html  css  js  c++  java
  • scanf( )与正则表达式

    scanf( )的用法

    • scanf()从stdin(标准输入)读取,包含在头文件stdio.h中,与此类似的有
      fscanf() 指定输入流
      sscanf() 指定缓存区
    • scnaf()的用法

    (1)scanf()函数根据由format(格式)指定的格式从stdin(标准输入)读取,并保存数据到其它参数. format(格式)字符串由控制字符,空白字符和非空白字符组成. 控制字符以一个%符号开始。
    (2)scanf()读取匹配format(格式)字符串的输入. 当读取到一个控制字符, 它把值放置到下一个变量. 空白(tabs, 空格等等)会跳过. 非空白字符和输入匹配, 然后丢弃.
    (3)scanf()的返回值是成功赋值的变量数量, 发生错误时返回EOF.

    • scanf() 的控制字符
    控制字符 说明 控制字符 说明
    %c 一个单一的字符 %p 一个指针
    %d 一个十进制整数 %n 一个等于读取字符数量的整数
    %i 一个整数 %s 一个字符串
    %e, %f, %g 一个浮点数 %% 一个精度符号
    %o 一个八进制数 %[ ] 一个字符集
    %x 一个十六进制数 %u 一个无符号整数

    • scanf()的一些用法
      • “%ns”,n为整数,读入的字符串最长不超过n,然后在末尾补’’
    • %nf 读入的浮点数最多有n位整数,位数多于n,会截断。
    • “%n[a-z]” 读入最多n个字符,如果遇到非a-z的字符,停止
    • “%[^=]” 读入任意多的字符,直到遇到"="停止
    • “%n[^=]” 读入"="号前的至多n 个字符
    • "*"表示该输入项读入后不赋予任何变量,即跳过该输入值
    • 比如%[0-9]表示只读入’0’到’9’之间的字符,%[a-zA-Z]表示只读入字母,
      '-'是范围连接符,也可以直接列出你需要读入的字符。

    example

    用scanf()代替gets()读取一整行存储为字符串 //哼 再也不用gets()了
    char *str;
    scanf("%[^
    ]%*c",str);
    printf("%s",str);
    

    输入:
    happy end
    输出:
    happy end

    其中,*%c的作用是吸收

    仅读取到指定字符
    	scanf("%[^0-9]%d",str,&num);
    	printf("%s
    ",str);
    	printf("%d",num);
    

    输入:
    happy123
    输出:
    happy
    123

    2018/4/10


    在 printf 中,* 作为整型参数控制输出长度,如 %*s 相当于%ns,
    %*s不会截断输出,%.*s会截断输出,均不补足长度
    %*d不会截断输出空格补足长度,%.*d不会截断输出,会用前导0补足长度

    int len, num;
    scanf("%d%d",&len, &num);
    printf("%*d",len,num);
    //输入5 20
    //输出    20
    //输入1 20
    //输出2
    

    2019/10/20

  • 相关阅读:
    数论 欧几里德算法 以及 欧几里得拓展
    数论 快速幂的原理讲解
    汉诺塔模板
    C++ 迭代器运算
    C++ STL vector set map 简易用法
    C++ 使用指向函数的指针数组
    Codeforces 718C 线段树+矩乘
    BZOJ 2506 分块
    Codeforces 455D 分块+链表
    Codeforces 19E 树上差分
  • 原文地址:https://www.cnblogs.com/kafm/p/12721872.html
Copyright © 2011-2022 走看看