首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >“减号”未被捕获

“减号”未被捕获
EN

Stack Overflow用户
提问于 2009-09-23 01:28:20
回答 1查看 143关注 0票数 0

运行:

代码语言:javascript
运行
复制
#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;
}

将输出:

代码语言:javascript
运行
复制
10-2
10

但是为什么呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-09-23 01:37:20

将连字符放在[...]集的末尾。这类似于正则表达式。

sscanf的%[...]格式接受范围。一个范围可以像这样使用:%[a-z]

为了区分匹配的普通连字符,必须将它放在末尾,这样它就不会被解释为范围。

您可以在sscanf manual page上找到更多文档。向下滚动到描述[模式的部分。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1463516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档