C-Programm – Kommandozeilenparameter
Dieser Beitrag wurde vor mehr als drei Monaten veröffentlicht. Bedenke bitte, dass die hier angebotene Information nicht mehr aktuell und gültig sein könnte. Informiere dich daher bitte auch an anderer Stelle über dieses Thema. Sollten sich neue Informationen ergeben haben, so kannst du mich auch gerne auf diese über einen Kommentar hinweisen. Vielen Dank!In diesem Beispiel zeige ich, wie du Parameter in einem C-Programm einsetzen kannst...
/*
read_args.c
Achtung:
- bei Platzhaltern (*) !!! Wird hier noch nicht beruecksichtigt
- die Hilfe ist nur per '-h' und nicht '--help' aufrufbar
- Fehlermeldungen werden nicht ausgegeben
*/
#include <stdio.h>
#include <unistd.h>
int main(int argc, char *argv[]) {
int option, i;
char *out_filename=NULL;
/* argc -> Anzahl Kommandozeilenparameter + Programmnamen (1), somit ist der Wert min. 1 */
/* argv -> ist ein Zeiger auf das Feld (Array) mit der in argc angegebene Anzahl von Elementen...
... und die Elemente (z.B.: argc[0] sind Zeiger auf eine Zeichenkette...
arg[0] -> Programmname
arg[1] -> 1. Parameter
arg[2] -> 2. Parameter
[...]
arg[n] -> letzter Parameter
0L -> das letzte Element von argv[] einthaelt eine Null
*/
/*
getopt() sortiert zunaechst das Feld argc[]
1. Optionen
2. Argumente
Rueckgabewert: erste in der Kommandozeile angegebene Option oder -1 wenn keine Option angegeben wurde...
... beim naechen Durchlauf jeweills die naechste angegebene Option...
... und zum Schluss -1
x: -> 'x' waehre hier eine Option
x:: -> 'x' waehre hier eine optinale Option
xy: -> 'x' und 'y' waehren hier die Optionen (Optionsliste)
*/
while((option = getopt(argc, argv, "ho:")) >= 0) {
switch(option) {
case 'h':
printf("Usage: %s [-o output-file] [input-file ...]\n", argv[0]);
return(0);
case 'o':
out_filename = optarg;
break;
/* wenn ein unzulaessige Option angegeben wurde, gibt getopt() ein '?' aus */
case '?':
return(1); /* unbekannte Option ... Abbruch */
}
/* die globale Variable 'optind' gibt den Index des ersten Arguments dem Feld argv[] weiter */
for (i=optind; i<argc; i++) {
printf("'%s'\n", argv[i]);
}
if (out_filename) {
printf("output is '%s'\n", out_filename);
}
}
return(0);
}
/*
Ausgabe:
./read_args -o test1 1 2 3 4 5
'1'
'2'
'3'
'4'
'5'
output is 'test1'
*/
Bewertung:
Ähnliche Blog-Einträge:
C-Programm – letzte Ziffer anzeigen
C-Programm – doppelte Schleife
C-Programm – Matrix-Addition
C-Programm – Palindrom

