C语言你不知道的scanf和printf

作者: YKDog | 来源:发表于2016-05-25 19:53 被阅读451次

前言

给大家分享一下几个你可能不知道的小东东

一、 scanf printf返回值

example1

         int num = printf("1234");

        printf("\n num = %d\n", num);
        return 0;
        
    结果:
    1234
 num = 4

analyze:
纯字符串情况下 返回值是字符个数。

example2

           int num = printf("a=%2d,b=%d", 1000, 20);

        printf("\n num = %d\n", num);
        
    结果:
a=1000,b=20
 num = 11

analyze:
返回值是格式转换后输出字符串长度。

example3

            int a;
        int b;

        int num = scanf("%d%d", &a, &b);

        printf("%d\n", num);
        
        结果:
        2

analyze:
scanf的返回值是成功输入数据的个数。

总结:printf的返回值是打印字符串的长度, scanf的返回值是成功输入数据到变量中的个数。

二、 scanf 正则表达式

example1

        char str[100] = {0};

        scanf("%s", str);

        printf("%s\n", str);

analyze:
空格和回车都是结束标志。
比如123空格符123 结果输出:123
比如123回车 结果输出:123

example2

            char str[100] = {0};

        scanf("%[^=]", str);

        printf("%s\n", str);
        
        输出结果:
       123=5678=123回车
        123

analyze:
输入结束标志, 可以使用自己喜欢的符号, 不一定是=号, 读入的时候只读入结束标志之前的。

example3

        char str[100] = {0};

        scanf("%[1]", str);

        printf("%s\n", str);
        
        输出结果:
       输入   11111121
                111111

analyze:
读取开头的1, 只要不是1就结束读取。

那如果只需要0-9呢? 只需要改一下表达式

example4

        char str[100] = {0};

        scanf("%[0-9]", str);

        printf("%s\n", str);
        
        输出结果:
       输入   12345a123
                12345       

同理a-zA-Z表示此范围的字符
当然也有组合比如a-zA-Z 0-9a-zA-Z 取反^表示遇到这些字符不在读取.

总结%[=] 表示只读取=遇到不是等不再把后边的数据读入变量。反之^=, 表示遇到第一个=, 不在把后边数据读入变量。

三、 sscanf

example1

         char *str = "25 Female iPhone 175";

        //25is age, 175 is height

        //抽取字符串中的25和175数据
        int age, height;

        sscanf(str, "%d %*s %*s %d", &age, &height);

        printf("age = %d height = %d\n", age, height);
        
        打印:
            age = 25 height = 175

按照响应的格式对应, 如果想要某一个数据,就不用加%s, 通过这样的处理, 可以获取字符串中想要的数据。

相关文章

网友评论

    本文标题:C语言你不知道的scanf和printf

    本文链接:https://www.haomeiwen.com/subject/wgmtdttx.html