Обнаружение никакой опции с помощью getopt в C (в Linux) - PullRequest
0 голосов
/ 18 ноября 2018

Я хочу написать простую программу на C, использующую терминал в Linux. Я не знаю, как проверить, не была ли предоставлена ​​опция во время выполнения программы:

./program.a

Вот мой сценарий:

#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>

int main(int argc, char **argv)
{
 int opt;

           while ((opt = getopt (argc, argv, "il:")) != -1)
               switch (opt) 
                {
                case 'i':
                   printf("This is option i");           
                break;
                case 'l':
                   printf("This is option l");
                break;
                default:
                   fprintf(stderr,"Usage: %s [-i] opt [-l] opt\n",argv[0]); 
                }

if (argc == -1) {
printf("Without option");
}
}

Итак, вывод с:

./program.a

Должно быть:

"Without option"

Я пытался сделать это с помощью if и установить argc в -1, 0 или NULL, но это не работает. Я знаю, что в bash я могу использовать sth вот так: if [$ # -eq 0] или if [-z "$ {p}"], чтобы проверить, не была ли предоставлена ​​опция, но в CI понятия не имею, как проверить что ...

У меня тоже есть второй вопрос: возможно ли как-то объединить функции bash с кодом C в одном скрипте / программе?

Спасибо за любые подсказки. B

1 Ответ

0 голосов
/ 18 ноября 2018

Я думаю, что вам нужно проверить argc число, если вы не передаете аргумент (опцию) для запуска, ваш argc будет 1, иначе 1 + count (опции).

...