Ich habe ein Array von Strings mit den Eingabeparametern für execvp
. Wie kann ich es in ein Array von String-Zeigern für execvp
verwandeln?Hinzufügen von Parametern zu Execvp aus Char-Array in c
Für Befehl mit einem Argument, sind zwei Strings vorhanden:
char param[4][10] = ["wc","file.txt"]
Und mit zwei Argumenten:
char param[4][10] = ["cp","file1.txt","file2.txt"]
Wenn ich die Anzahl der Argumente im Voraus wissen, habe ich einfach
schreiben kannchar *arg[]={param[0],param[1],NULL}
execvp(arg[0],arg);
oder
char *arg[]={param[0],param[1], param[2], NULL}
execvp(arg[0],arg);
.
Aber was kann ich tun, wenn ich die Anzahl der Argumente nicht kenne?
Ich versuchte
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');
Looping, aber das gab mir segfaults.
Sie vorbei an den zugewiesenen 'array' zu schreiben. 'array [count]' befindet sich nicht in einem Array, dessen Größe "count" ist. Sie können nicht zu zufälligen nicht initialisierten Zeigern "strcpy"; und du brauchst es nicht. Der letzte Eintrag in den Argumenten muss ein Nullzeiger sein. –
@Antti, Sorry für die Verwirrung. Mein param-Array hat die Größe 4, dessen Index 3 ist. Deshalb. –
Sie schreiben in 'arg [3]', wobei 'arg' ein Array variabler Länge mit 3 Elementen ist. –