【发布时间】:2022-01-13 00:32:32
【问题描述】:
我正在尝试从命令行保存我的参数及其参数,如下所示
./run cat hello.txt : grep left : wc -c
我想在不知道:的数量的情况下按如下方式分隔数组中的每个参数
char *cat_args[] = {"cat", "tests/nevermind", NULL};
char *grep_args[] = {"grep", "left", NULL};
char *cut_args[] = {"wc", "-c", NULL};
我怎样才能做到这一点?
int nbProc = 2;
for (int i = 0; i < argc; i++){
if (strcmp(argv[i], ":") == 0){
nbProc++;
}
}
int indice_debut[nbProc-2];
int j = 0;
for (int i = 1; i < argc; i++){
if (strcmp(argv[i], ":") == 0){
argv[i] = NULL;
indice_debut[j] = i + 1;
j++;
}
}
有了这个我就能得到indice_debut = {4,7},因为:在第4和第7位。
我试图这样运行它但没有运气,我这样做是为了可以使用execvp。
execvp(argv[indice_debut[0]], argv + indice_debut[0]);
谢谢
【问题讨论】:
-
使用
malloc()动态分配数组 -
@Barmar 问题是我不知道我要制作多少个数组
-
您最多需要
argc/2数组。所以分配那么多。 -
你能给我看一下代码吗?命名数组怎么样?如果我不知道有多少,我将如何命名它们
-
指针数组只需要一个名称。