我写了一个必须显示主要参数的代码,但是当我编译它并键入“ *”程序时,它显示了我的文件结构。cmd中的命令如下所示:program.exe 1 2 3 *
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char const* argv[]) {
for (int i=0; i<argc; i++) printf("%s\n", argv[i]);
return 0;
}
结果是:
program
1
2
3
program.c
program.exe
10-03-20
11-02-20
我的问题是:是否可以强制程序打印“ *”而不是列出文件。谢谢建议
问题是您的外壳将
—
pmg
*
其转换为"file1 file2 ..."
。您的C程序没有任何问题(尽管<stdlib.h>
没有必要包括在内)。为防止外壳转换为星形,请使用引号:program.exe 1 2 3 "*"
感谢您的帮助
—
stasio14
与问题无关,但严格来说,这
—
伦丁
char const* argv[]
是不正确的。您可能不会自己发明main()的形式,只有编译器可以做到这一点。argv
实际上,它是读/写内存,尽管对其进行写通常不是最好的主意。
Windows cmd Shell不执行通配符扩展。要么不是从cmd shell运行,要么是编译器正在插入逻辑以模拟shell可以进行的扩展
—
ikegami
*
得到由外壳,而不是程序本身的解释。使用\*
或"*"
将*传递给程序。