c - C中如何判断用户在命令行输入 "*"表示多个文件

标签 c arguments argc

例如,如果用户在命令行中输入

match "hello" test*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 match

ARGUMENT hello

ARGUMENT test0.in

ARGUMENT test1.in

ARGUMENT test2.in

那么当用户输入“*”时,我如何让 containMany 变为 true 呢?

最佳答案

那是因为您的 shell 会自动进行 glob 样式的替换。如果您不希望 shell 这样做,请将输入参数括在单引号中或使用反斜杠。

如果你的工作目录有文件 A 和 B 那么这个表达式:

test *

将替换为

test A B

测试执行之前。

另一方面,如果你像这样运行:

test '*'

或者像这样:

test \*

然后将没有 shell 替换,您的程序将真正看到星星。

关于c - C中如何判断用户在命令行输入 "*"表示多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21666302/

相关文章:

c - 使用 if 语句的段错误

C 指针数组的比较

javascript - 如何动态获取执行另一个Function的Function Name?

c - 将 argv 存储到 int 数组

比较c中的两个文件

java - 编程中的动态链接器是什么?

c - 有没有办法重用 pthreads?

python - 使用 QtCore.SIGNAL 传递参数

php - 来自 php 数组的意外 json 输出结构

c++ - 带数字偏移量的命令行参数选项