función getopt() en C para analizar los argumentos de la línea de comando

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 :

Publicación traducida automáticamente

Artículo escrito por SrjSunny y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *