老坚果 发表于 2019-8-12 17:56:40

scanf函数中转换字符的匹配字符集是什么意思?

scanf里面的转换字符有用[]括起来的,用法是匹配相应字符集,这个匹配是什么意思?因为我输入匹配字符集之外的字符依然会存入数组中,所以我猜我应该不是限定输入的意思。那是什么意思?求助

迷雾少年 发表于 2019-8-12 18:47:30

本帖最后由 迷雾少年 于 2019-8-12 18:53 编辑


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

'-'是范围连接符
如果你只需要读"abc"里面的字符就可以用% (或者%、%、%、%.....)
如果想读入某个范围之外的字符串就在前面加一个'^',如:%[^a-z]就表示读入小写字母之外的字符

老坚果 发表于 2019-8-12 18:55:06

本帖最后由 老坚果 于 2019-8-12 19:04 编辑

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

但是您看我2.png那个输入的是abc123,但是它n=7,也就是它abc123\0都读进去了啊
找您说的说的话,应该是n=0才对啊?还是说读入有什么别的意思吗?

迷雾少年 发表于 2019-8-12 19:16:57

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

你先初始化下char a = {0};然后再输入abc123看看

老坚果 发表于 2019-8-12 19:22:12

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

我刚又试了几遍,您说的对,很抱歉。但是为什么我程序中的n最小值始终为7啊?我刚百度搜了找不到,还麻烦您给讲讲。。。

老坚果 发表于 2019-8-12 19:23:45

迷雾少年 发表于 2019-8-12 19:16
你先初始化下char a = {0};然后再输入abc123看看

成了

迷雾少年 发表于 2019-8-12 19:24:50

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

你先初始化下char a; 再按你图上的几个输入看看输出是否还一致(初始化是好习惯啊),不然char a里面的数据是什么都不知道

老坚果 发表于 2019-8-12 19:29:04

迷雾少年 发表于 2019-8-12 19:24
你先初始化下char a; 再按你图上的几个输入看看输出是否还一致(初始化是好习惯啊),不然char a里面的 ...

谢谢谢谢,我刚学C语言,我也不知道数组该怎么初始化,初始化总报错,就干脆不初始化了。。。

迷雾少年 发表于 2019-8-12 19:29:38

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

我想知道初始化后那个输入abc123后输出是怎么样的了,我这里没那个环境弄不了

老坚果 发表于 2019-8-12 19:31:18

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

好嘞

迷雾少年 发表于 2019-8-12 19:33:20

老坚果 发表于 2019-8-12 19:31
好嘞

这就对了,都能解释的通了。{:5_109:}
页: [1]
查看完整版本: scanf函数中转换字符的匹配字符集是什么意思?