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("%[^\n]%*c%[^\n]",v1,v2);
         cout<<v1<<" "<<v2<<endl; 
        //输入 : china 
        //      USA
        //输出;  china USA 
        //%[^\n] 可以读入一行,后面的%*c是为了过滤掉换行符

  3. fscanf
    1. 用法为 int fscanf(文件指针,格式字符串,输入列表);
    2. 返回值为读入的变量个数
    3. 支持的正则表达式与scanf相同

  4. sscanf()

猜你喜欢

转载自www.cnblogs.com/cyj1258/p/12178466.html