在 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)的位置有优点也有缺点。
我只是想在 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)的位置有优点也有缺点。