当我给出参数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");
}
}
答案 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)