1

当我给出参数 print 时,为什么我的代码会返回“不是有效的命令”?

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");
    }
}
4

3 回答 3

13

您不能使用 比较 C 字符串==。这仅进行指针比较。您需要strcmp改用:

if (strcmp(argv[1], "print") == 0) …
于 2010-09-17T14:00:32.013 回答
8

因为你不能像 C 中那样比较字符串。

你需要使用:

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

等等。

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

于 2010-09-17T14:00:40.283 回答
2

因为argv[1]是一个char*:像 0xDEADBEEF
和“打印”的行为就好像它是另一个 char*:像 0xBADF00D

和 0xDEADBEEF != 0xBADF00D

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

于 2010-09-17T14:03:00.540 回答