У меня возникла следующая проблема:
У меня есть массив указателей на символы
char *opts[] = { "-a", "--append", "-b" };
и имя команды, хранящееся в
char cmd[] = "ls";
Теперь мне нужно вычислить все возможные комбинации, которые я сделал, используя Научную библиотеку GNU, и выполнить команду с комбинациями вычислений.
У меня проблема в том, как вычислить объем памяти, необходимый для передачи char * в system ().
Вот моя первая попытка:
int length = strlen(cmd) * sizeof(char);
for (int i = 0; i < 3; ++i) {
length += strlen(opts[i]) * sizeof(char);
}
Ну, это сработало, но я чувствую, что это не правильное / лучшее решение. Не могу ли я привести двумерный массив к плоскому одномерному массиву и получить его размер (если я не ошибаюсь, в C нет многомерных массивов, C только имитирует их).