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

use*_*767 1 c program-entry-point function

当我给出参数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");
    }
}
Run Code Online (Sandbox Code Playgroud)

Kon*_*lph 13

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

if (strcmp(argv[1], "print") == 0) …
Run Code Online (Sandbox Code Playgroud)


unw*_*ind 8

因为你无法比较C中的字符串.

你需要使用:

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

等等.

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

  • @Oli:标准的'argv [argc]`(main的开头值)保证为NULL (2认同)