如果我输入带有通配符的路径作为命令行参数,例如:
测试程序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/