2015-09-12 4 views
0

Я создал метод parseCmd для моей программы simpleShell в C и сохранил каждый аргумент перед пробелом разделителя, который будет храниться в массиве args []. Тем не менее, я пытаюсь добавить аргументы с их соответствующими параметрами в связанный список, но у меня возникают проблемы с их получением.C - strsep splitting strings

Например, если я типа ls, я хочу:

args[0] = "ls"; 

И когда я типа ls -l, я хочу;

args[0] = "ls"; 
args[1] = "-l"; 

То, что я пытаюсь сделать здесь: если «-» обнаружен аргумент, добавьте его к предыдущему аргументу «LS» и сохранить в виде отдельной строки «Ls -l», чтобы хранить в linkedList (уже реализован).

Вот мой метод.

void parseCmd(char* cmd, char** args) 
{  
    int i; 

    for(i = 0; i < MAX_LINE; i++) { 
     args[i] = strsep(&cmd, " "); 

     if (args[i] != NULL) 
      printf("--> %s \n",args[i]); 

     if(args[i] == NULL) break; 
    } 
} 

EDIT:

Я попытался следующие

if (strchr(args[i], '-')) 
    printf("--> %s \n", args[i]); 

Но я получаю ошибку сегм.

+1

и ваш вопрос что? –

+0

В чем вопрос? Вы можете найти ответ, в то же время вы найдете вопрос. – 4pie0

+0

Я пытаюсь объединить две строки в строковый массив, только если второе значение в массиве строк начинается с '-', поэтому я могу добавить параметр() с его последующими аргументами – Sean

ответ

0

String - это массив символов. Вы понимаете, что args - это char **, поэтому в основном это массив массивов. Вы можете проверить, содержит ли запись args '-', если она истинна, тогда вы можете сделать простую строку concat и добавить это значение в args. Проверьте значение первого символа строки.

Программным,

if(args[i][0] == '-') 
    <Insert code for concatenation>