Chiama l'utilizzo della funzione Getopt

Chiama l'utilizzo della funzione Getopt
Molti di noi sanno come possiamo usare gli argomenti nel nostro programma, ma se iniziamo a usare molti argomenti e proviamo a mantenere l'ordine e il numero corretti di argomenti, farà un puzzle Jumble per l'utente. Per evitare un tale ostacolo, useremo diverse "opzioni". Ad esempio, "ls -l" qui "-l" è un'opzione. Possiamo usare più argomenti e utilizzarli come opzioni in più ordini. Lo abbiamo anche visto con il nostro compilatore GCC in questo articolo. Inoltre, possiamo usare molte opzioni e possiamo utilizzarle in base alle nostre esigenze.

Sintassi:

Entrambi 'argc ' E 'argv ' sono i parametri per l'istruzione di conteggio accettata dalla funzione principale (). 'optstring'è l'argomento di una stringa che deve riconoscere i caratteri delle opzioni. Qualsiasi personaggio rintracciato da un colon ":" è considerato un argomento. "Optind" è la variabile inizializzata che è considerata un indice per l'elemento successivo in cui è in linea per l'elaborazione.

Scopo di usare il getopt in c:

La funzione getopt () è integrata in C che viene utilizzata per analizzare gli argomenti della riga di comando.

Valore di ritorno nella funzione getopt ()

  1. Getopt () restituirà '-1' se non ci sono più opzioni da elaborare.
  2. Getopt () tornerà '?'Se un'opzione che viene elaborata non è riconoscibile.
  3. Getopt () restituisce ":" invece di '?'Se l'utente non inserisce alcun valore per l'argomento.

Se getopt () incontra un carattere di opzione che non è in "optstring", restituirà il ("?') carattere come output. Se manca un argomento come opzione, dovrebbe restituire un colon (':') come output. Getopt () imposterà la variabile "optopt" sul carattere selezionato che ha attivato l'errore in entrambi i casi. Getopt () stamperà corrispondentemente un messaggio indicativo a stderr nella sintassi definita per l'utilità "getopts" se la variabile "opterr" non è impostata su 0 e il carattere iniziale di "optstring" non è un colon.

La funzione getopt () non deve essere rientrante. La sicurezza del filo non è obbligatoria per una funzione che non deve essere rientrante.

Esempio per getopt () in c:

Prendiamo un semplice programma che accetta gli utenti come -u e -g per il gruppo. Prima di tutto, è necessario includere il file di intestazione per la funzionalità getopt ().

#includere
#includere


Impostiamo la funzione principale in cui abbiamo "argc" come intero e array di caratteri come '** argv'. Ora qui imposteremo alcune variabili e imposteremo un nome intero opzione_index = 0; Perché ciascuno degli argomenti che forniremo avrà un numero di indice in modo che possiamo quindi iterarlo attraverso tutti gli argomenti. Stiamo impostando o inizializzandolo su 0 per arrestare l'avvertimento perché potremmo usare una variabile non inizializzata.

# Char *user_name = null;

Dal momento che non abbiamo un tipo di dati stringa in C, impostiamo un array di caratteri per '-u' per prendere il nome utente come input e avviarlo con un valore null.

Ora entreremo in un tempo e ci consentirà di leggere tutti gli argomenti se sono state impostate opzioni. Come per le condizioni, abbiamo bisogno che le nostre parentesi lo racchiudono con un valore reale che nel nostro caso è "opzione_index = getopt (argc, argv," Gu: ")". Useremo getopt () per guardare il nostro conteggio degli argomenti come "argc" e leggere dal nostro array "argv" per impostare le opzioni. Allo stesso modo, ecco un'opzione "Gu:" e abbiamo messo un colon dopo la bandiera "U". Il ':' dopo il valore della flag indica che acquisisce un argomento. Non importa in quale ordine metti le opzioni, ma importa che tu metta un colon dopo le opzioni.

Ora avremo un'istruzione switch nel nostro ciclo while e esamineremo il valore memorizzato nell'indice della variabile "opzione_index". Stiamo esaminando ogni elemento per ogni caso.

Imposteremo per la prima volta il caso in cui impostiamo "user_name = optarg". Le opzioni possono essere utilizzate per leggere l'utente che abbiamo aggiunto come input durante l'inserimento di 'U'. Dobbiamo anche indicare che abbiamo finito con questo caso e lo facciamo in lingua C usando "Break" dopo ogni caso alla fine.

Allo stesso modo, utilizziamo il secondo caso in cui l'utente inserisce "G", verrà indicato che ha selezionato il gruppo e ci rompemo anche da questa affermazione.

Ora nell'ultimo caso, lo stiamo usando per qualsiasi altra opzione, che nel nostro caso può essere un errore. Possiamo raccogliere questo con "impostazione predefinita:" e possiamo passare e specificare se l'opzione non valida viene identificata o inserita. Visualizzeremo le istruzioni di stampa con "opzione errata".

Faremo anche un po 'di diversità. Speriamo che tu non abbia mai visto prima che sia il valore di ritorno. Se mettiamo il valore di ritorno a 1, lasceremo la funzione principale. Il nostro programma segnalerà un errore, il che significa che abbiamo eseguito il programma in modo errato, quindi non vogliamo restituire 0, quindi lasciamo il programma al suo punto.

Ora abbiamo già chiuso tutti i blocchi e ci siamo assicurati che di solito siamo tornati alle staffe principali. Il programma normalmente restituisce il valore 0 alla funzione principale. Ora abbiamo controllato con successo l'operazione di errore dal nostro programma.

Vediamo se il nostro programma funziona; Dopo aver digitato il seguente codice, vorremmo che tu inserissi questo comando nella riga di comando. Abbiamo usato GCC e siamo andati direttamente all'opzione_program del codice sorgente.c 'e poi usato "-o" per le opzioni. Dopo questo, sarà una discussione, e qui "semplice" è un output.

Dopo aver eseguito il nostro 'GCC Simple_Option.c -o semplice -wall ' comando correttamente, ora passiamo ed eseguiamo con un'opzione errata che è '-h'. L'uso di "-h" come opzione ci darà un errore perché abbiamo inviato un'opzione errata. Possiamo anche usare entrambi gli argomenti insieme, ottenendo il risultato di conseguenza.

Qui possiamo vedere se vogliamo sapere come è stato eseguito il nostro ultimo programma. Se digiti "Echo $?", E se restituisce 0, significa che l'ultimo programma è stato eseguito correttamente e se restituisce 1 come puoi vedere nell'immagine sopra, il che significa che l'ultima esecuzione del programma è fallita.

Conclusione:

Questo articolo mirava a darti una comprensione migliore e più chiara della funzione getopt () in modo da poter migliorare la leggibilità del codice e migliorare la riusabilità del codice. Abbiamo discusso di un semplice esempio con la sintassi. L'articolo ti aiuterà a ottenere facilmente una conoscenza e una comprensione molto valida di come usare Getopt () come funzione. Argomenti diversi come parametri sono stati discussi per sfruttare meglio la funzione.