Frage

Warum funktioniert das nicht? Wenn ich versuche, -l zu verwenden oder es als erstes Argument, das, wenn Anweisungen nicht. Sie gehen immer auf die else-Anweisung.

#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;
}
War es hilfreich?

Lösung

Sie können nicht vergleichen Strings == Operator -. Verwendung strcmp() statt

Durch den Vergleich Strings == Sie die Adressen von char * Zeiger vergleichen, nicht String-Werte.

Andere Tipps

In C-Strings sind vergleicht durch strcmp Funktion. Stattdessen vergleicht Ihre nur Zeiger. Also:

if (strcmp(argv[1],"-l") == 0)
{
    printf("Yay!\n");
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top