运行:
#include <stdio.h>
int main(int argc, char *argv[]) {
const char *exp = "10-2+3*5";
char tok[255];
sscanf(exp, "%[^+-*/^]", tok);
printf("%s\n", tok);
sscanf(exp, "%[^-+*/^]", tok);
printf("%s\n", tok);
return 0;
}
将输出:
10-2
10
但是为什么呢?
最佳答案
将连字符放在 [...]
组的末尾。这与正则表达式类似。
sscanf 的 %[...]
格式接受范围。范围可以这样使用:%[a-z]
为了区分匹配的普通连字符,您必须将其放在末尾,这样它就不会被解释为范围。
您可以在 sscanf manual page 上找到更多文档。向下滚动到描述 [
模式的部分。
关于c - "Minus"没有被捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1463516/