typestar

Parsear opciones con getopt en C

getopt recorre argv y maneja flags agrupados y sus argumentos.

#define _POSIX_C_SOURCE 200809L

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

int main(int argc, char **argv) {
    int verbose = 0;
    int limit = 60;
    const char *out = NULL;
    int opt;

    while ((opt = getopt(argc, argv, "vl:o:")) != -1) {
        switch (opt) {
        case 'v':
            verbose++;
            break;
        case 'l':
            limit = atoi(optarg);
            break;
        case 'o':
            out = optarg;
            break;
        default:
            fprintf(stderr, "usage: %s [-v] [-l N] [-o FILE]\n", argv[0]);
            return 1;
        }
    }

    printf("verbose %d limit %d out %s\n", verbose, limit,
           out ? out : "(stdout)");
    printf("%d positional arguments\n", argc - optind);
    return 0;
}

Cómo funciona

  1. _POSIX_C_SOURCE debe definirse antes de los includes para exponer getopt.
  2. La cadena de opciones lista las letras; dos puntos significa que toma valor.
  3. optarg guarda ese valor; optind, dónde terminaron las opciones.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
34
Caracteres a escribir
589
Tokens
163
Ritmo de tres estrellas
95 tpm

Al ritmo de tres estrellas de 95 tokens por minuto, este intento toma unos 103 segundos.

Escribe este fragmento

Paso 2 de 4 en Entorno del programa; paso 2 de 14 en Programación de sistemas.

← Anterior Siguiente →