scanf有什么功能(你真的了解scanf吗)

scanf有什么功能(你真的了解scanf吗)(1)

scanf()函数是通用终端格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。可以读入任何固有类型的数据并自动把数值变换成适当的机内格式。

其调用格式为: scanf("<格式化字符串>",<地址表>);

scanf()函数返回成功赋值的数据项数,出错时则返回EOF。

scanf有什么功能(你真的了解scanf吗)(2)

说明:

sscanf与scanf类似,都是用于输入的,只是后者以键盘(stdin)为输入源,前者以固定字符串为输入源。第一个参数可以是一个或多个{%[*][width][{h|l|I64|L}]type|''|'\t'|'\n'|非%符号}

注:

1、*亦可用于格式中,(即%*d和%*s)加了星号(*)表示跳过此数据不读入.(也就是不把此数据读入参数中)

2、{a|b|c}表示a,b,c中选一,[d],表示可以有d也可以没有d。

3、width表示读取宽度。

  • 例一. 常见用法。

  • sscanf("123456 asdf", "%s", buf);

    printf("%s\n", buf); //结果为:123456

    • 例二. 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。

    sscanf("123456 ", "%4s", buf);

    printf("%s\n", buf); //结果为:1234

    • 例三. 取到指定字符为止的字符串。如在下例中,取遇到空格为止字符串。

    sscanf("123456 abcdedf", "%[^ ]", buf);

    printf("%s\n", buf); //结果为:123456

    • 例四. 取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。

    sscanf("123456abcdedfBCDEFxyz", "%[1-9a-z]", buf);

    printf("%s\n", buf); //结果为:123456abcdedf

    • 例五. 取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。

    sscanf("123456 abcdedfBCDEFxyz", "%[^A-Z]", buf);

    printf("%s\n", buf); //结果为:123456 abcdedf

    • 例六. 给定一个字符串iios/12DDWDFF@122,获取 / 和 @ 之间的字符串,先将 "iios/"过滤掉,再将非'@'的一串内容送到buf中

    sscanf("iios/12DDWDFF@122", "%*[^/]/%[^@]", buf);

    printf("%s\n", buf); //结果为:12DDWDFF

    • 例七. 给定一个字符串““hello, world”,仅保留world。(注意:“,”之后有一空格)

    sscanf("hello, world", "%*s%s", buf);

    printf("%s\n", buf); //结果为:world

    大家如果对编程感兴趣,想了解更多的编程知识,解决编程问题,咨询编程学习,可以关注我们的程序员互动联盟(coder_online),这里有java高手、C /C高手、windows/Linux高手等你来。

    ,

    免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

      分享
      投诉
      首页