C Arguments ne fonctionne pas?
-
20-09-2019 - |
Question
Pourquoi pas ce travail? Lorsque je tente d'utiliser ou -l -s comme premier argument, l'instruction if ne prennent pas. Ils vont toujours à la déclaration d'autre.
#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;
}
La solution
Vous ne pouvez pas comparer les chaînes utilisant l'opérateur de ==
-. strcmp()
utilisation à la place
En comparant les chaînes à l'aide ==
vous comparez les adresses des pointeurs char *
, pas de chaîne.
Autres conseils
Dans les chaînes C sont en fonction strcmp compare. Au lieu de cela votre pointeurs compare simplement. Donc:
if (strcmp(argv[1],"-l") == 0)
{
printf("Yay!\n");
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow