【问题标题】:getting the (star-symbol) as input in a c program在 c 程序中获取(星号)作为输入
【发布时间】:2021-05-06 00:11:29
【问题描述】:

我只是想在 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);
    
}

有什么建议吗?提前致谢

【问题讨论】:

  • "*" 有效,只是不太方便。 \* 列出了上面的目录。我只是在 windows 编辑器中做了这个并使用 gcc (MinGW.org GCC-6.3.0-1) 6.3.0 编译它
  • 不,不方便,但这是唯一的方法。在类 Unix 的 shell 中,通配符 * 会在您的程序甚至运行之前立即扩展为文件列表,因此您的程序无法要求不执行此操作。 (换句话说,当你的程序开始运行时,为时已晚。)[编辑:根据 bruceg 刚才所说的,我可能在 MinGW 下“没有办法让你的程序询问”是错误的。]跨度>
  • 这是MinGWglobbing的神器。您可以尝试将其关闭,如下所示:willus.com/mingw/_globbing.shtml 通过添加 _CRT_glob/ 的外部声明
  • 其他可能性是: (1) 让您的程序提示用户输入表达式,而不是通过argv 从调用命令行获取它们。 (2) 重写你的程序以接受“x”而不是*进行乘法运算。
  • 您也可以将表达式写入文件,然后使用该文件为您的程序指定输入:executable.exe &lt;file.txt

标签: c windows mingw calculator


【解决方案1】:

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

int _CRT_glob = 0;

【讨论】:

    【解决方案2】:

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

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

    现在它不会扩展 *

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-27
      • 1970-01-01
      相关资源
      最近更新 更多