C Argv 检查哪个 argv 路径来自哪个输入

标签 c argv unistd.h

如果我输入带有通配符的路径作为命令行参数,例如:
测试程序a* b*
该目录包含以下内容:
aa ab ba bb
我的 argv 字符串将包含:
{"testprogramm","aa","ab","ba","bb"}

但是,我想区分源自第一个参数 (a*) 和第二个参数 (b*) 的文件,我该怎么做?我正在寻找的是一种方法,可以通过上面的示例告诉我 "aa""ab" 来自第一个参数和 "ba" 和第二个中的“bb”

我知道cp.c命令可以做到这一点,但我不知道如何做到这一点,因为源代码是相当嵌套的。

编辑:标准副本(来自 gnu core utils)无法区分,只有嵌入式(shell,其中programm和utils是同一文件)可以。

最佳答案

./program a* "|" b*

然后从程序中搜索分隔符:

#include <stdio.h>
#include <string.h>

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

    for (int i = 1; i < argc; i++)
    {
        if (strcmp(argv[i], "|") == 0)
        {
            group++;
        }
        else
        {
            printf("group: %d file: %s\n", group, argv[i]);
        }
    }
    return 0;
}

输出为:

group: 0 file: aa
group: 0 file: ab
group: 1 file: ba
group: 1 file: bb

关于C Argv 检查哪个 argv 路径来自哪个输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73279156/

相关文章:

c - 为什么数组名argv可以赋值?

c++ - getpid 在 linux 上使用 -std=c++11 作为编译器标志

C 将文件内容从 EOF 复制到 SOF

c - 函数参数中的数组名称的处理方式是否与本地声明的数组不同(自动)

c - 我可以在头文件中看到定义,那么为什么编译器会报错 "undefined reference"呢?

c++ - 在 C++ 命令行中获取参数

c++ - Visual Studios,在 C 代码中使用预编译 header

c - 之前存储的字符串会被 fget 覆盖

c - unistd.h 读取()函数 : How to read a file line by line?

F#菜鸟: matching command line args