c - "Minus"没有被捕获

标签 c

运行:

#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/

相关文章:

c++ - 在链接规范(extern "C",extern "C++")中,在 C++ 代码中包含标准 C header 的指定行为是什么?

c - 如何判断逻辑表达式是否等价

c - 解析二维字符数组

改变指针数组的内容

c - Linux GCC 不显示字符串

c# - 在c或c#中创建名为 "..."的文件夹

c++ - 在 C/C++ 中通过套接字发送多条消息

c - 创建一个 for 循环来编辑数据结构中的列表

c - 当时间过去时真正杀死当前进程

c - 粒子群优化 - 更新粒子位置