我一直在试图解决这个问题,并且我有一种解决方法,但我只是想检查一下我没有遗漏一些明显的东西。基本上,我有一系列遵循某些规则的命令。任何包含数字、ASCII 字母或某些符号的内容都是标记,<、>、|、&&、; 等是分隔符。我需要能够分辨出我刚刚找到哪一个并将它们存储在一个数组中。
所以在一个while循环中我有
a = sscanf (cp, "%[0-9a-zA-Z!@:/-.,^+% ]", str);
我已经将一个空格作为要查找的符号之一,因为我想不出任何其他方式。相反,在我得到这个词(加上可能的空格)之后,我打电话给
delimiters[] = " ";
token = strtok(str, delimiters);
哪个应该删除空格,只留下一个标记(如果没有空格,它不会改变单词)。我只是好奇是否有办法用 sscanf 做类似的事情,因为我知道如果它们之间有空格,它已经分解了字符串,但是如果你再次调用它并且它看到空格,它只是不读取任何事物。
如果没有,那也很好。它只是困扰着我一整天。