У меня есть массив строк, содержащий входные параметры для execvp
. Как я могу превратить его в массив указателей строк для execvp
?Добавление параметров в execvp из массива char в c
Для команды с одним аргументом, две строки присутствуют:
char param[4][10] = ["wc","file.txt"]
И с двумя аргументами:
char param[4][10] = ["cp","file1.txt","file2.txt"]
Если я знаю, что количество аргументов заранее, я могу просто написать
char *arg[]={param[0],param[1],NULL}
execvp(arg[0],arg);
или
char *arg[]={param[0],param[1], param[2], NULL}
execvp(arg[0],arg);
соответственно.
Но что я могу сделать, когда не знаю количества аргументов?
Я попытался зацикливание
int count =4;
char* arg[count];
for(int i=0;i<count;i++)
{
strcpy(exe[i],param[i]);
printf("%s\n",exe[i]);
}
strcpy(exe[count],'\0');
, но это дало мне ошибки сегментации.
Вы пишете мимо выделяемой 'array'. 'array [count]' не находится в массиве с размером 'count'. Вы не можете «strcpy» для случайных неинициализированных указателей; и вам не нужно. Последняя запись в аргументах должна быть нулевым указателем. –
@ Аннет, Извините за путаницу. Мой массив param имеет размер 4, индекс которого равен 3. Вот почему. –
вы пишете на 'arg [3]', где 'arg' - массив переменной длины с 3 элементами. –