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

なぜなら: 0xDEADBEEF のようなものでargv[1]あり 、「print」は別のものであるかのように動作します: 0xBADF00D のようなもの char*
char*

および 0xDEADBEEF != 0xBADF00D

使いたいstrcmp()( http://linux.die.net/man/3/strcmp )

于 2010-09-17T14:03:00.540 に答える