If i input paths with wildcards as command line parameters, like:
testprogramm a* b*
and the directory contains the following content:
aa ab ba bb
my argv string will contain:
{"testprogramm","aa","ab","ba","bb"}

但是,我想区分源自第一个参数(a*)和第二个参数(b*)的文件,我该如何做到这一点?我正在寻找的是一种方法,可以通过上面的例子告诉我"aa""ab"来自第一个参数,"ba""bb"来自第二个参数.

我知道cp.c个命令可以做到这一点,但我不知道如何做到这一点,因为源代码非常嵌套.

编辑:标准副本(来自gnu core utils)不能区分,只有嵌入的(shells,其中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++相关问答推荐

为什么我得到更多的256假阳性在PKZIP解密密钥验证?

返回一个包含数组的 struct

如何在C中从函数返回指向数组的指针?

这是一个合法的C Strdup函数吗?

C中的指针增量和减量(*--*++p)

限制不同类型的限定符

仅从限制指针参数声明推断非混叠

具有正确标头的C struct 定义问题

为什么会出现此错误?二进制表达式的操作数无效

如何在C中处理流水线中的a、n命令?

传递给函数的 struct 中的数组

未使用sem_open正确初始化信号量

Leet代码运行时错误:代码不会在Leet代码上编译,而是在其他编译器中编译,如netbeans和在线编译器

如何在C中计算包含递增和递减运算符的逻辑表达式?

从系统派生线程调用CRT

子进程不会修改父进程中的统计信息

如何在 C 中编辑 struct 体中的多个变量

当最大成员是原始类型时,联合是否可以大于最大成员?

在 C 中,在故障/退出点释放分配的资源的良好编码实践是什么?

用C程序读取.txt文件并解析,如何处理空字段