2013-04-21 2 views
3

Я пытаюсь создать массив строковых массивов с нулевым символом. Все в массиве известно во время компиляции, за исключением одного элемента, который помещается в него во время выполнения.Создание массива строковых массивов с нулевым символом, где большинство строковых массивов являются статическими

Это, как я хочу, чтобы массив посмотреть: [ ["command1", "arg", "arg", 0], ["command2", 0], argv, ["command3", "arg", 0] ]

Так вот command1, command2 и их арги известны во время компиляции, только ARGV помещается в него во время выполнения.

Проблема в том, что я не могу выполнить эту работу. В настоящее время я делаю это, чтобы создать массив с NUM_COMMANDS (номер) команды:

char *commands[ NUM_COMMANDS ][] = { 
    {"command1", "arg", 0}, 
    {0}, /*This is where I want to place argv*/ 
    {"command2", "arg", 0} 
    }; 

Но это не позволит мне вставить ARGV.

Как я могу изменить это в виде массива, которым я пользуюсь?

Спасибо!

+1

Не прочитал это еще, но это должно помочь: http://stackoverflow.com/questions/2305255/pointer-array-syntax-char-p-pn-in-cc – rliu

+2

Возможно, вам придется добавить еще информацию, такую ​​как «NUM_COMMANDS», и как вы пытаетесь «вставить» «argv». –

+2

(И сообщение об ошибке компилятора.) – Mat

ответ

3

Мне удалось решить это самостоятельно после прочтения ссылки на вопрос roliu.

char **commands[ NUM_COMMANDS ]; 
char *command1[] = {"command1", 0}; 
char *command2[] = {"command2", "arg", 0}; 

argv[0] = "grep"; 

commands[0] = (char **) command1; 
commands[1] = (char **) argv; 
commands[2] = (char **) command2; 

Благодарим за комментарий к оригинальному вопросу!

 Смежные вопросы

  • Нет связанных вопросов^_^