所以我正在开发一个创建和使用shell的项目。必须做的一件事是" |可执行| -p |提示|应该允许用户选择用户定义的提示。否则,默认值应为“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;
}
答案 0 :(得分:2)
当你执行argv[1] == "-p"
时,你会比较两个指针,以及两个永远不会相同的指针。
要比较C中的字符串,请使用strcmp
函数:strcmp(argv[1], "-p") == 0
。
答案 1 :(得分:1)
您还可以使用strncmp(char * str1,char * str2,int n)来比较两个字符串的前n个字节。