C Argumente Ein Problem?
-
20-09-2019 - |
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;
}
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