La función getopt() es una función integrada en C y se utiliza para analizar argumentos de línea de comandos.
Sintaxis :
getopt(int argc, char *const argv[], const char *optstring) optstring is simply a list of characters, each representing a single character option.
Valor devuelto: la función getopt() devuelve diferentes valores:
- Si la opción toma un valor, ese valor apunta a la variable externa optarg.
- ‘-1’ si no hay más opciones para procesar.
- ‘?’ cuando hay una opción no reconocida y se almacena en la variable externa optopt.
- Si una opción requiere un valor (como -f en nuestro ejemplo) y no se proporciona ningún valor, getopt normalmente devuelve ?.
Al colocar dos puntos como el primer carácter de la string de opciones, getopt devuelve: en lugar de ? cuando no se da ningún valor.
Generalmente, la función getopt() se llama desde dentro de la declaración condicional de un bucle. El ciclo termina cuando la función getopt() devuelve -1. Luego se ejecuta una declaración de cambio con el valor devuelto por la función getopt().
Se utiliza un segundo ciclo para procesar los argumentos adicionales restantes que no se pueden procesar en el primer ciclo.
El siguiente programa ilustra la función getopt() en C:
// Program to illustrate the getopt() // function in C #include <stdio.h> #include <unistd.h> int main(int argc, char *argv[]) { int opt; // put ':' in the starting of the // string so that program can //distinguish between '?' and ':' while((opt = getopt(argc, argv, “:if:lrx”)) != -1) { switch(opt) { case ‘i’: case ‘l’: case ‘r’: printf(“option: %c\n”, opt); break; case ‘f’: printf(“filename: %s\n”, optarg); break; case ‘:’: printf(“option needs a value\n”); break; case ‘?’: printf(“unknown option: %c\n”, optopt); break; } } // optind is for the extra arguments // which are not parsed for(; optind < argc; optind++){ printf(“extra arguments: %s\n”, argv[optind]); } return 0; }
Salida :