Итак, я работаю над проектом по созданию и использованию оболочки. Одна вещь, которая должна быть выполнена, - «executable | -p | prompt |» должна позволить пользователю выбирать пользовательскую подсказку. В противном случае значением по умолчанию должно быть «257sh>». Я написал свой код, чтобы сделать это, независимо от того, что он продолжает двигаться в инструкцию else. После некоторых экспериментов я знаю, что моя строка argv[1] == "-p"
является тем, что вызывает проблему, потому что без нее работает код. Дело в том, что когда я печатаю argv [1], он печатает «-p», (при условии, вот что я вход). Вот моя функция оболочки.Сравнение строк C против указателей строк для равенства
void shellLoop(char *n)
{
char *line;
char **args;
int status;
char name = n;
do{
printf("%s>", n);
line = sysReadLine();
args = splitLine(line);
status = execute(args);
free(line);
free(args);
}while(status);
}
А вот моя главная функция
int main(int argc, char *argv[])
{
if(argc == 3 && argv[1] == "-p"){
shellLoop(argv[2]);
}
else{
shellLoop("257sh");
}
return EXIT_SUCCESS;
}
'argv [1] ==" -p "': использовать 'strcmp' вместо' == 'в C. – BLUEPIXY