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
_POSIX_C_SOURCEdebe definirse antes de los includes para exponer getopt.- La cadena de opciones lista las letras; dos puntos significa que toma valor.
optargguarda ese valor;optind, dónde terminaron las opciones.
Palabras clave y builtins usados aquí
NULLbreakcasecharconstdefaultintreturnswitchwhile
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.
Paso 2 de 4 en Entorno del programa; paso 2 de 14 en Programación de sistemas.