在 C 程序中获取(星号)作为输入

getting the (star-symbol) as input in a c program

我只是想在 Windows 上使用带有运算符 + - * / 的 gcc 6.3.0 用 C 编写一个小计算器。 它工作正常,但如果我选择 *,它会列出我的 argv[] 数组中目录中的所有文件。 第一个 for 循环仅用于调试。

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
    for(int i = 0; i < argc; i++) {
        printf("%s\n", argv[i]);
    }
    if(argc != 4) {
        printf("\nFalsche Syntax!\n");
        exit(1);
    }
    
    double a,b,c;
    char op;

    sscanf(argv[1], "%lf", &a);
    sscanf(argv[2], "%c", &op);
    sscanf(argv[3], "%lf", &b);

    switch(op) {
    case '+':
        c = a + b;
        break;
    case '-':
        c = a - b;
        break;
    case '*':
        c = a * b;
        break;
    case '/':
        c = a / b;
        break;
    default:
        printf("\nUnbekannter Operator!\n");
        exit(1);
    }

    printf("\n\t%.5g %c %.5g = %.5g\n", a, op, b, c);
    
}

有什么建议吗?提前致谢

这是 MinGW 的神器 globbing。您可以尝试将其关闭,如下所示:https://willus.com/mingw/_globbing.shtml 通过添加 _CRT_glob

的外部声明
int _CRT_glob = 0;

编译器是MinGW,非常有帮助,为您添加了通配符扩展。但如果你不想要它,你可以把它关掉。

int _CRT_glob = 0;
int main(int argc, char *argv[]) {

现在不展开 *

我们注意到,在其他环境中,通配符由 shell 扩展,因此这仅在 Windows 上有效。通配符扩展(称为 globbing)的位置有优点也有缺点。