Мне трудно понять, как работает true и false с оператором if, когда я использую argv & getopt.
Это простой код:
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char *argv[]) {
int opt;
while ((opt = getopt (argc, argv, "i:l:")) != -1)
switch (opt) {
case 'i':
printf("This is option i");
break;
case 'l':
printf("This is option l");
break;
default:
fprintf(stderr,"Usage: %s here goes usage\n",argv[0]);
}
if (argc == 1) {
printf("Without options");
}
if ((argc == 2) && (argv[1] != "-l") || (argv[1] != "-i")) {
printf("Without option -l or -i but with other argument \n");
printf("argv[1] is %s\n", argv[1]);
}
Использование:
./a.out foo
Выход:
Without option -l or -i but with other argument
argv[1] is foo
Пока все хорошо. Теперь позвольте мне проверить, работает ли он, когда argv [1] равен "-l":
Использование:
./a.out -l
Выход:
./a.out: option requires an argument -- 'l'
Usage: ./a.out here goes usage
Without option -l or -i but with other argument
argv[1] is -l
Getopt работает нормально, но вторая информация появляется, даже если argv [1] равен -l, и я установил в операторе if это (argv [1]! = "-L"). Почему это так работает? Понятия не имею.
Спасибо за любой ответ.
B.