例如考虑C字符串数组,所有的数字sscanf可以用来匹配通配符吗?
..."12334", "21335", "24335"...
,我想知道如何这些字符串的很多比赛这个通配符掩码
**33* (where * = any digit 0-9)
我可以用sscanf(str, mask, ...)
做到这一点?格式"%1d%1d%[3]%[3]%1d"
似乎比我想要的要多(当33不在那里时)和"%1d%1d33%1d"
似乎表现得很奇怪,匹配一些但不是全部匹配的条目。
上下文在我的代码:
if (sscanf(array[i], mask, &a1, &a2, &a3) == 3)
3被的通配符的数字位数匹配。
你能显示你的完整代码,包括检查返回值吗?使用'argv [1]'作为'sscanf()'的第一个参数的'int main()'的程序是完美的。 –
@John Zwinck我添加了用于检查的行。 'mask'是我描述的格式,'a1,a2,a3'是32位'int's。我真的只是问,如果'sscanf'能够完成我所描述的内容,以及格式应该是什么 –
@jefferson你有几个选择。 1)滥用strchr以确保字符串中的第一次和第二次出现在您想要的地方。 2)手工制作整数,以便可以匹配每种可能的组合。 – Chirality