[英]How to get Command Line Arguments running in C for input and output files
[英]How to determine users input “*” at command line to indicate multiple files in C
例如,如果用户键入命令行
匹配“你好”测试* in
它意味着在名称为“test”的所有.in类型的文件中找到“the”。
bool containMany=false;
int i;
for(i= 0; arguments[i]; i++){
printf("ARGUMENTS %s\n",arguments[i]);
if(strstr(arguments[i],"*")){
containMany=true;
break;
}
}
但它不起作用。 论点是:
ARGUMENT比赛
ARGUMENT你好
ARGUMENT test0.in
ARGUMENT test1.in
ARGUMENT test2.in
那么当用户输入“*”时,我如何使containsMany变为真?
那是因为你的shell会自动进行全局样式的替换。 如果您不希望shell将输入参数括在单引号中或使用反斜杠。
如果你的工作目录有文件A和B,那么这个表达式:
test *
将被取代
test A B
在测试执行之前 。
另一方面,如果你这样运行:
test '*'
或者像这样:
test \*
那么就没有shell替换,你的程序实际上会看到这个星。
传统上,shell在命令行上执行通配符扩展 - 这就是在Unix风格的平台上完成的方式。 如果不需要扩展,则用户通常必须引用包含通配符的参数或转义wildard字符。
在Windows上, command.com
/ cmd.exe
shell 不执行文件名扩展。 然而:
CRT_noglob.o
链接或添加零初始化的全局变量int _CRT_glob = 0;
到你的一个.c文件来禁用运行时的glob扩展。 setargv.obj
,它将导致运行时扩展命令行文件名通配符,如果这是您想要的行为。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.