主要功能的论点,无法理解这一点!

时间:2010-09-17 13:59:09

标签: c function main

当我给出参数print时,为什么我的代码会给我回复“Not a valid command”?

int main(int argc, char *argv[]) {

    printf("Argument 2 er %s\n", argv[1]);

    if(argv[1] == "print") {
        printf("Print kommando kalt");
    } else if(argv[1] == "random") {
        printf("Random kommando kalt");
    } else if(argv[1] == "replace") {
        printf("Replace kommando kalt");
    } else if(argv[1] == "remove") {
        printf("Remove kommando kalt");
    } else if(argv[1] == "len") {
        printf("øem kommando kalt");
    } else {
        printf("Ingen gyldig kommando\n");
    }
}

3 个答案:

答案 0 :(得分:13)

您无法使用==比较C字符串。这只做指针比较。您需要使用strcmp代替:

if (strcmp(argv[1], "print") == 0) …

答案 1 :(得分:8)

因为您无法比较C中的字符串。

您需要使用:

if(strcmp(argv[1], "print") == 0)
  printf("Print kommando kalt\n");

等等。

另外,请确保在未确定其确实存在且有效的情况下不访问argv[1];如果你的程序没有参数调用它将是NULL。您可以使用argc的值来确定您获得的参数数量。

答案 2 :(得分:2)

因为argv[1]char*:类似于0xDEADBEEF
并且“print”表现得好像是另一个 char*:类似于0xBADF00D

和0xDEADBEEF!= 0xBADF00D

您想使用strcmp()http://linux.die.net/man/3/strcmp