In vielen Fällen ist es wünschenswert, beim
Programmstart auf der Befehlszeile Argumente für das Programm bestimmen zu
können.
In C ist die Übergabe von Parametern aus der Befehlszeile ein fester
Bestandteil des Sprachkonzeptes. Für den Programmierer sieht das so aus, dass
bei der Funktion main zwei Parameter
angegeben werden können, deren Benennung sich wie folgt eingebürgert hat:
main (int argc, char *argv[])
Die Werte werden vom Betriebssystem beim Programmstart eingetragen und können vom Programmierer auf einfachste Weise ausgewertet werden. Die Parameter haben dabei folgende Bedeutung:
- argc In
dieser Integervariablen stehen die Anzahl Argumente, die der Aufrufer in der
Befehlszeile angegeben hat.
Der Programmname selber wird hier mitgerechnet,
sodass argc niemals kleiner als 1 sein kann.
- argv Hier
handelt es sich um ein Array von Strings.
Jeder einzelne String enthält jeweils
ein Befehlszeilenargument. Definitionsgemäss sollte in argv[0] der Programmname
des soeben gestarteten Programms übergeben werden. Es gibt jedoch Systeme, die
diesen Programmnamen nicht bestimmen können. Dort ist argv[0] undefiniert.
Das
erste gültige Argument wird in argv[1] abgelegt, das zweite in argv[2] und so
weiter.
Das Array ist immer durch einen Nullzeiger abgeschlossen.
Das folgende Beispiel demonstriert die Anwendung der Befehlszeilenargumente zur Auswertung von Schaltern, die gewisse Zustände beim Programmstart festlegen sollen. Alle Schalter seien durch einen Schrägstrich eingeleitet.
int sommer, winter, fruehling, herbst;
main (int argc, char *argv[])
{
while (argc > 1) {
argc--;
if
(argv[argc][0] == '/') { /* Schalter erkannt */
switch (argv[argc][1]) {
case
'S': sommer = 1; break;
case
'W': winter = 1; break;
case
'F': fruehling = 1; break;
case
'H': herbst= 1; break;
}
}
}
...
...
}
|