鱼C论坛

 找回密码
 立即注册
查看: 1775|回复: 10

[已解决]scanf函数中转换字符的匹配字符集是什么意思?

[复制链接]
发表于 2019-8-12 17:56:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
scanf里面的转换字符有用[]括起来的,用法是匹配相应字符集,这个匹配是什么意思?因为我输入匹配字符集之外的字符依然会存入数组中,所以我猜我应该不是限定输入的意思。那是什么意思?求助
最佳答案
2019-8-12 18:47:30
本帖最后由 迷雾少年 于 2019-8-12 18:53 编辑


"%n[a-z]"   读入最多n个字符,如果遇到非a-z的字符,停止
"%[^=]"    读入任意多的字符,直到遇到"="停止
"%n[^=]"   读入"="号前的至多n 个字符
“%[0-9]“    表示只读入'0'到'9'之间的字符,%[a-zA-Z]表示只读入字母

'-'是范围连接符
如果你只需要读"abc"里面的字符就可以用%[abc] (或者%[cab]、%[acb]、%[a-c]、%[c-a].....)
如果想读入某个范围之外的字符串就在前面加一个'^',如:%[^a-z]就表示读入小写字母之外的字符
2.png
1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-8-12 18:47:30 | 显示全部楼层    本楼为最佳答案   
本帖最后由 迷雾少年 于 2019-8-12 18:53 编辑


"%n[a-z]"   读入最多n个字符,如果遇到非a-z的字符,停止
"%[^=]"    读入任意多的字符,直到遇到"="停止
"%n[^=]"   读入"="号前的至多n 个字符
“%[0-9]“    表示只读入'0'到'9'之间的字符,%[a-zA-Z]表示只读入字母

'-'是范围连接符
如果你只需要读"abc"里面的字符就可以用%[abc] (或者%[cab]、%[acb]、%[a-c]、%[c-a].....)
如果想读入某个范围之外的字符串就在前面加一个'^',如:%[^a-z]就表示读入小写字母之外的字符
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-12 18:55:06 | 显示全部楼层
本帖最后由 老坚果 于 2019-8-12 19:04 编辑
迷雾少年 发表于 2019-8-12 18:47
"%n[a-z]"   读入最多n个字符,如果遇到非a-z的字符,停止
"%[^=]"    读入任意多的字符,直到遇到"="停止
...


但是您看我2.png那个输入的是abc123,但是它n=7,也就是它abc123\0都读进去了啊
找您说的说的话,应该是n=0才对啊?还是说读入有什么别的意思吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-12 19:16:57 | 显示全部楼层
老坚果 发表于 2019-8-12 18:55
但是您看我2.png那个输入的是abc123,但是它n=7,也就是它abc123\0都读进去了啊
找您说的说的话,应该 ...

你先初始化下char a[20] = {0};然后再输入abc123看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-12 19:22:12 | 显示全部楼层
迷雾少年 发表于 2019-8-12 18:47
"%n[a-z]"   读入最多n个字符,如果遇到非a-z的字符,停止
"%[^=]"    读入任意多的字符,直到遇到"="停止
...

我刚又试了几遍,您说的对,很抱歉。但是为什么我程序中的n最小值始终为7啊?我刚百度搜了找不到,还麻烦您给讲讲。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-12 19:23:45 | 显示全部楼层
迷雾少年 发表于 2019-8-12 19:16
你先初始化下char a[20] = {0};然后再输入abc123看看

成了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-12 19:24:50 | 显示全部楼层
老坚果 发表于 2019-8-12 19:22
我刚又试了几遍,您说的对,很抱歉。但是为什么我程序中的n最小值始终为7啊?我刚百度搜了找不到,还麻烦 ...

你先初始化下char a[20]; 再按你图上的几个输入看看输出是否还一致(初始化是好习惯啊),不然char a里面的数据是什么都不知道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-12 19:29:04 | 显示全部楼层
迷雾少年 发表于 2019-8-12 19:24
你先初始化下char a[20]; 再按你图上的几个输入看看输出是否还一致(初始化是好习惯啊),不然char a里面的 ...

谢谢谢谢,我刚学C语言,我也不知道数组该怎么初始化,初始化总报错,就干脆不初始化了。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-12 19:29:38 | 显示全部楼层
老坚果 发表于 2019-8-12 19:29
谢谢谢谢,我刚学C语言,我也不知道数组该怎么初始化,初始化总报错,就干脆不初始化了。。。


我想知道初始化后那个输入abc123后输出是怎么样的了,我这里没那个环境弄不了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-12 19:31:18 | 显示全部楼层
迷雾少年 发表于 2019-8-12 19:29
我想知道初始化后那个输入abc123后输出是怎么样的了,我这里没那个环境弄不了

好嘞
3.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-12 19:33:20 | 显示全部楼层

这就对了,都能解释的通了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 17:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表