比较C字符串与字符串指针的相等性

时间:2016-04-18 22:24:08

标签: c shell input command-line-arguments

所以我正在开发一个创建和使用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;
}

2 个答案:

答案 0 :(得分:2)

当你执行argv[1] == "-p"时,你会比较两个指针,以及两个永远不会相同的指针。

要比较C中的字符串,请使用strcmp函数:strcmp(argv[1], "-p") == 0

答案 1 :(得分:1)

您还可以使用strncmp(char * str1,char * str2,int n)来比较两个字符串的前n个字节。