execvp
の入力パラメータを含む文字列の配列があります。 execvp
の文字列ポインタの配列に変換するにはどうすればよいですか?引数が1つのコマンドについては文字列からexecvpにパラメータを追加する
、2つの文字列が存在している:
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);
である。
しかし、引数の数がわからないときはどうすればよいですか?
私は
をループしてみましたが、それは私にセグメンテーションフォルトを与えました。
をあなたが割り当てられた 'array'過ぎて書いています。 'array [count]'はサイズが 'count'の配列にありません。初期化されていないポインタをランダムに 'strcpy 'することはできません。あなたはそうする必要はありません。引き数の最後の項目はNULLポインターでなければなりません。 –
@Antti、混乱して申し訳ありません。私のparam配列のサイズは4です。そのインデックスは3です。 –
あなたは 'arg [3]'に書きます。ここで 'arg'は3要素の可変長配列です。 –