C-使用sscanf忽略空白

C-使用sscanf忽略空白,c,parsing,strtok,scanf,C,Parsing,Strtok,Scanf,我一直在想办法解决这个问题,我有点工作要做,但我只是想确认我没有遗漏一些明显的东西。基本上,我有一系列遵循特定规则的命令。任何包含数字、ASCII字母或某些符号的内容都是标记和、|、&&、,;,etc是分隔符。我需要知道我刚刚找到了哪一个,并将它们存储在一个数组中 所以在一段时间内我有 a = sscanf (cp, "%[0-9a-zA-Z!@:/-.,^+% ]", str); 我已经包括了一个空间作为一个符号来寻找,因为我不能想出任何其他方式。相反,在我得到这个词(加上任何可能的空格)后

我一直在想办法解决这个问题,我有点工作要做,但我只是想确认我没有遗漏一些明显的东西。基本上,我有一系列遵循特定规则的命令。任何包含数字、ASCII字母或某些符号的内容都是标记和、|、&&、,;,etc是分隔符。我需要知道我刚刚找到了哪一个,并将它们存储在一个数组中

所以在一段时间内我有

a = sscanf (cp, "%[0-9a-zA-Z!@:/-.,^+% ]", str);
我已经包括了一个空间作为一个符号来寻找,因为我不能想出任何其他方式。相反,在我得到这个词(加上任何可能的空格)后,我会调用

这样就可以删除空格,只留下一个标记(如果没有空格,就不会改变单词)。我只是想知道是否有一种方法可以用sscanf做类似的事情,因为我知道如果字符串之间有空格,它就已经分解了字符串,但是如果你再次调用它,它看到了空格,它就什么也看不见了


如果没有,也没关系。它整天都在困扰我。

你可以将格式更改为

a = sscanf (cp, " %[0-9a-zA-Z!@:/-.,^+%]", str);

格式中的前导
“”
跳过一个[可能为空]的空格字符序列,然后扫描一个非空格可接受的标记字符序列。

但这不意味着我的字符串前面必须有一个空格吗?因此,即使令牌和分隔符之间没有空格,这仍然有效吗?(对不起,我想检查一下自己,但我现在正在使用手机)@user1777900表示跳过字符串前的任何空格(如果有)。@user1777900格式字符串中的空格所使用的空格序列可能是空的。如果没有空白,psace将匹配空白标记的空序列。可能重复
a = sscanf (cp, " %[0-9a-zA-Z!@:/-.,^+%]", str);