2

なぜこれが機能しないのですか?最初の引数として-lまたは-sを使用しようとすると、ifステートメントは使用されません。彼らは常にelseステートメントに行きます。

#include <stdio.h>
#include <fcntl.h>
#include <errno.h>
#include <string.h>
#include <stdlib.h>

int main(int argc, char* argv[])
{
    if (argv[1] == "-l")
    {
        printf("Yay!\n");
    }
    else if (argv[1] == "-s")
    {
        printf("Nay!\n");
    }
    else
    {
        printf("%s\n", argv[1]);
    }
        return 0;
}
4

2 に答える 2

10

==演算子を使用して文字列を比較することはできません-strcmp()代わりに使用してください。

を使用して文字列を比較することにより、文字列値ではなく、ポインタ==のアドレスを比較します。char *

于 2010-02-16T10:54:50.737 に答える
4

Cでは、文字列はstrcmp関数によって比較されます。代わりに、ポインタだけを比較します。それで:

if (strcmp(argv[1],"-l") == 0)
{
    printf("Yay!\n");
}
于 2010-02-16T10:55:48.970 に答える