【发布时间】:2016-08-10 20:42:39
【问题描述】:
所以我正在做一个项目来创建和使用外壳。必须做的一件事是“|executable| -p |prompt| 应该允许用户选择用户定义的提示。否则,默认应该是“257sh>”。无论如何,我编写了我的代码来执行此操作它不断进入 else 语句。经过一些实验后,我知道我的 argv[1] == "-p" 行是导致问题的原因,因为没有它,代码可以工作。问题是当我打印出 argv [1] 时,它会打印“- p"(假设这是我输入的内容)。这是我的 shell 函数。
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":在 C 中使用strcmp而不是==。
标签: c shell input command-line-arguments