• scanf sscanf fscanf


    1. scanf 从控制台输入   fscanf 从文件输入   sscanf 从指定字符串输入
    2. scanf
      1. 用法为 int scanf(const char * restrict format,...);
      2. scanf 是从标准输入读
      3. scanf一般情况下是碰到空格,制表符以及换行作为输入的结束
      4. 支持正则表达式 格式为  %[]
        1. []内是匹配的字符,^表示求反集,当遇到非集合内的字符时立即终止输入
        2. [a-z]  输入指定范围的小写字母,遇到非法字符立即终止
        3. [0-9] 输入指定范围的数字,遇到非法字符立即终止
        4. %[^a-z] 输入不包括指定字符的字符
        5. %*[a-z0-9] * 表示过滤满足条件的字符,也就是跳过满足条件的字符,其后一定要有新的%语句,否则无法读入
        6. int year,month,day;
          scanf("%d-%d-%d",&year,&month,&day) ;
          cout<<year<<" "<<month<<" "<<day<<endl;
          //输入 2020-1-10   输出 2020 1 10
           
          int income;
          scanf("%*[^0-9]%d",&income);
          cout<<income;
          // 输入 : Today's revenue is 3000  输出 : 3000 
          // %*[0-9]过滤了前面的非数字 
          

          char v1[100],v2[100];
          scanf("%[^
          ]%*c%[^
          ]",v1,v2);
           cout<<v1<<" "<<v2<<endl; 
          //输入 : china 
          //      USA
          //输出;  china USA 
          //%[^
          ] 可以读入一行,后面的%*c是为了过滤掉换行符
    3. fscanf
      1. 用法为 int fscanf(文件指针,格式字符串,输入列表);
      2. 返回值为读入的变量个数
      3. 支持的正则表达式与scanf相
    4. sscanf()
      1. 用法 int sscanf (const char *str,const char * format,........); 
      2. 可以使用正则表达式,正则表达式用法与scanf相同
      3. char ch[1000];
        strcpy(ch, "Today is Saturday, January 11, 2020");
        char weekday[100],month[100];
        int year,day;
        sscanf(ch, "%*s%*s%*c%[^,]%*c%s%d%*c%d", weekday,month,&day,&year);
        cout << year << month << day << weekday << endl;
        //输出 : 2020January11Saturday
        //%*s%*s过滤 Today is   %*c 过滤星期前的空格 %[^,]接受星期,后面的%*c
        //均为过滤,
  • 相关阅读:
    JAVA中int、String的类型转换
    MyEclipse 快捷键
    HTTP 协议详解(转)
    HTTP协议详解
    MYSQL类型与JAVA类型对应表
    XML中<beans>中属性概述
    poj 2342 && hdu 1520
    51nod 1873 初中的算术
    AtCoder Grand Contest 014 B
    “玲珑杯”线上赛 Round #17 河南专场 B.震惊,99%+的中国人都会算错的问题
  • 原文地址:https://www.cnblogs.com/cyj1258/p/12178466.html
Copyright © 2020-2023  润新知