Будет намного проще, если вы используете функцию getopt()
, предназначенную для обработки синтаксического анализа аргументов командной строки.
Примечание. Поскольку вы уже включили библиотеку unistd
, используйте getopt
, который будет намного мудрее, в противном случае доступны другие реализации, такие как argp()
Вот программа, которая использует getopt
из POSIX C Library unistd
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <sys/fcntl.h>
#include <stdbool.h>
#include <string.h>
struct optionArguments{
bool argumenti;
bool argumentl;
bool argumentR;
};
int main(int argc, char* argv[]){
struct optionArguments options;
options.argumenti = false;
options.argumentl = false;
options.argumentR = false;
int opt;
while ((opt = getopt(argc, argv, "ilR")) != -1) {
switch (opt) {
case 'i': options.argumenti = true; break;
case 'l': options.argumentl = true; break;
case 'R': options.argumentR = true; break;
default:
fprintf(stderr, "Usage: %s [-ilR] \n", argv[0]);
exit(EXIT_FAILURE);
}
}
if(options.argumenti){
printf("OPTION I\n");
}
if(options.argumentl){
printf("OPTION l\n");
}
if(options.argumentR){
printf("OPTION R\n");
}
}
Для других способов реализации посетите: Анализ аргументов командной строки в C?