Я делаю оболочку (в C) для школьного задания, и у меня есть эта проблема: я прочитал вход и имею массив слов. (например: {"/ bin/ls", "-l", ">", "file"}) И я хочу иметь подмассивы со всеми словами между специальными символами типа '<', '>', '|' , Так что, если мой входC Сплит массив строк в подмассивах
/bin/ls -l > f.txt > /usr/bin/wc
Я хочу иметь:
{{"bin/ls", "-l"}, {"f.txt"}, {"usr/bin/wc"}}
Так что я могу легко назвать execv с правильными аргументами.
В настоящее время у меня есть char ***, который я вряд ли выделяю с помощью трех циклов, а затем копирую с char ** на char *** с некоторыми не столь простыми алгоритмами.
Есть ли простой способ разбиения массива строки на массив массивов строк? (Мне кажется тривиальной задачей разбивать массив на подстроки, но C делает это довольно сложно для меня)
Кроме того, я знаю, что я мог бы разбить вход на этих специальных символах, а затем получить массивы между ними, но меня интересует, как это можно сделать с разбиением массива.
Посмотрите на функции 'strsep',' index' и/или 'strchr', чтобы помочь с этим. Нет стандартного способа делать такое разбиение на C, но это довольно просто реализовать. – hexist