美文网首页C++C语言
怎么让scanf指定读取数据?

怎么让scanf指定读取数据?

作者: 明江带你学c语言 | 来源:发表于2018-06-12 21:13 被阅读4次

之前我有讲过一个关于缓冲区,关于格式化输入输出的一片文章,但其实他们还有很多有趣的知识点,下面讲讲,怎么让scanf读取你想要的数据,想不到吧。

指定读取长度:

有通过书本学习的人会知道,printf() 是可以规定输出长度的,比如%2d。

其实scanf也有这种用法,规定最长读取多少的数据。比如%8d说明最长读取8位,%8s,最长读取8个字符

只读取规定的字符:

比如scanf(“%[a]”,&n);就是%[xxx],[ ]包围起来的是需要读取的字符集合。例如,%[abcd]表示只读取字符abcd,遇到其它的字符就读取结束;注意,这里并不强调字符的顺序,只要字符在 abcd 范围内都可以匹配成功,所以你可以输入 abcd、dcba、ccdc、bdcca 等。

为了简化字符集合的写法,scanf() 支持使用连字符-来表示一个范围内的字符,例如 %[a-z]、%[0-9] 等。这里是根据ASCII码的,因为再ASCII里面字符0-9,a-z,A-Z,是排列在一起的。

不匹配某些字符

或者读取 0~9 以外的所有字符,scanf() 允许我们在%[ ]中直接指定某些不能匹配的字符,具体方法就是在不匹配的字符前面加上^,例如:

%[^

]表示匹配除换行符以外的所有字符,遇到换行符就停止读取;

%[^0-9]表示匹配除十进制数字以外的所有字符,遇到十进制数字就停止读取。

丢弃读取到的字符

在前面的代码中,每个格式控制符都要对应一个变量,把读取到的数据放入对应的变量中。其实你也可以不这样做,scanf() 允许把读取到的数据直接丢弃,不往变量中存放,具体方法就是在 % 后面加一个*,例如:

%*c; 说明读取到字符就丢掉。

%*[a-z];说明读取到小写a到z就丢掉。

%*[^a-z];说明读取到除a-z以外的东西全部丢掉

以上就是全部内容了,希望可以为你们有帮助,喜欢我文章的朋友,可以关注,转发,收藏,评论。

相关文章

  • 怎么让scanf指定读取数据?

    之前我有讲过一个关于缓冲区,关于格式化输入输出的一片文章,但其实他们还有很多有趣的知识点,下面讲讲,怎么让scan...

  • scanf()正则表达式用法

    scanf()的用法 (1)scanf()函数根据由format(格式)指定的格式从stdin(标准输入)读取,并...

  • 随笔

    getchar()和scanf经验 1,getchar()和scanf都是从缓冲区读取数据,如果首先使用了scan...

  • C语言格式输入函数scanf()详解

    scanf函数称为格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。 scanf函数的一般形式 ...

  • 2019.2.24苏小红C语言

    1.scanf()读入字符 在%c前加一个空格,将缓存区中的回车符读走: scanf()按指定格式读取输入,非法字...

  • scanf和scanf_s的用法

    scanf ANSI C中没有scanf_s(),只有scanf(),scanf()在读取时不检查边界,所以可能会...

  • scanf()读取值

    status == scanf("%d", num) scanf()读取num的一个新值;然后检查scanf是否成...

  • 【C语言】-数据输入-scanf( )和getchar( )

    格式化输入函数scanf( ) scanf( )功能: 按照指定的格式读入键盘上输入的若干个任意类型的数据,存入到...

  • 格式输入函数

    格式: scanf(“格式控制串”,地址表列) 功能:按指定格式从键盘读入数据,存入地址表指定的 存储单...

  • Storm实战-词频统计

    需求 读取指定目录的数据,并实现单词计数功能 实现方案 Spout来读取指定目录的数据,作为后续Bolt处理的in...

网友评论

    本文标题:怎么让scanf指定读取数据?

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