Как сканировать массив и что-то делать, когда он ловит определенную фразу

Предположим, что в Си мне нужен код, чтобы сделать что-то, когда пользователь вводит что-то вроде "-o" в командной строке linux, включая argv и argc. Более конкретно, если имя файла начинается с -o. Как поймать, когда введена определенная строка символов?

2 ответа

#include <string.h>
int main(int argc, char *argv[])
{
    int i;
    for (i = 1; i < argc; ++i)
    {
        if (argv[i][0] == '-' && argv[i][1] == 'o')
        {
            /* "-o" detected. Take care of argv[i] here. */
        }
    }
}

Использовать getopt

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <getopt.h>

int main(int argc , char *argv[]) {
    char *file;
    int opt;
    while ( ( opt = getopt(argc, argv, "o:") ) != -1 ){
        switch(opt){
        case 'o':
            file=strdup(optarg);
            printf("file is %s\n", file);
            free(file);
            break;
        default :
            ;//return 1;
        }
    }
    return 0;
}
/* demo
>a.out -o test.c
file is test.c
*/
Другие вопросы по тегам