Я пишу программу для школьного проекта, которая должна эмулировать оболочку Unix, в очень простой форме.Это в основном парсинг ввода, затем выполнение fork / exec.Мне нужно иметь возможность читать аргументы в программе (а не как аргументы, передаваемые программе из командной строки) по отдельности.Например, я подскажу:
Please enter a command:
... и мне нужно иметь возможность анализировать оба ...
ls
ИЛИ
ls -l
но проблема в том, что, кажется, нет простого способа сделать это.scanf()
будет извлекать каждый аргумент индивидуально, но я не вижу способа поместить их в различные слоты в массиве char *.Например, если я сделаю ...
char * user_input[10];
for (int i=0; i<10; i++){
user_input[i] = (char *) malloc(100*sizeof(char));
}
for (int i=0; *(user_input[i]) != '@'; i++)
{
scanf("%s", user_input[index]);
index++;
}
... тогда user_input[0]
получит "ls"
, затем цикл начнется заново, тогда user_input[0]
получит "-l"
.
gets
и fgets
просто займите всю строку.Очевидно, что эту проблему можно логически решить, пройдя и вычтя каждый отдельный аргумент ... но я хотел бы избежать необходимости делать это, если есть простой способ, который я пропускаю.Есть ли?
Спасибо!