运行:
#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
但是为什么呢?
发布于 2009-09-23 01:37:20
将连字符放在[...]
集的末尾。这类似于正则表达式。
sscanf的%[...]
格式接受范围。一个范围可以像这样使用:%[a-z]
为了区分匹配的普通连字符,必须将它放在末尾,这样它就不会被解释为范围。
您可以在sscanf manual page上找到更多文档。向下滚动到描述[
模式的部分。
https://stackoverflow.com/questions/1463516
复制相似问题