1 Theorie | |
→ | 1.1 Die Programmiersprache C |
Kommandozeilen-Argumente |
Rückgabewert |
Coding Standards |
Aufgabe |
Die Funktion
int main(int argc, char *argv[]) { ... }
bekommt die Kommandozeilen-Argumente über die Parameter
argc und argv übergeben.
Dabei ist argc die Anzahl der Worte auf der Kommandozeile,
das aufgerufene Programm wird als erstes Wort mitgezählt.
Das Feld argv hat argc Elemente mit den Indizes
0...argc-1. Jedes Feld-Element ist ein Zeiger auf ein Wort
der Kommandozeile.
Das Beispiel ex030 zeigt den Zugriff auf die Kommandozeilenargumente.
/** @file ex030.c Demonstrationsprogramm fuer Zugriff auf
Kommandozeilen-Argumente.
*/
/* Copyright (C) 2014-2017 - HS Schmalkalden. All rights reserved. */
#include "he-conf.h"
#include <stdio.h>
#include <stdlib.h>
#if HAVE_UNISTD_H
#include <unistd.h>
#endif
#if HAVE_PROCESS_H
#include <process.h>
#endif
/** Hauptprogramm.
@param argc Anzahl der Kommandozeilen-Argumente.
@param argv Feld mit den Kommandozeilen-Argumenten.
@return 0 bei Erfolg, alle anderen Werte zeigen Fehler an.
*/
int
main(int argc, char *argv[])
{
int i;
for (i = 0; i < argc; i++) {
printf("Argument %2d = \"%s\"\n", i, argv[i]);
}
exit(0); return 0;
}
/* vim: set ai sw=4 ts=4 expandtab : */
Wird das Programm mit
./argtest Dies ist ein Test.
gestartet, erzeugt es folgende Ausgabe:
Argument 0 = "./argtest" Argument 1 = "Dies" Argument 2 = "ist" Argument 3 = "ein" Argument 4 = "Test."
Wird ein Programm über Visual Studio gestartet, gibt es zwei Möglichkeiten, dem Programm Kommandozeilenargumente beim Start zu übergeben:
ex030 Dies ist ein Test.gestartet.
Am Programmende wird ein Statuscode an den Elternprozess bzw. das Betriebssystem zurückgegeben. Status-Code 0 bedeutet, dass das Programm erfolgreich und fehlerfrei die gewünschte Funktionalität ausgeführt hat. Alle anderen Status-Codes zeigen das Auftreten von Fehlern an.
In der Vergangenheit war es üblich, verschiedene
Fehler-Status-Codes zurückzugeben, denen dann die Art des Fehlers
entnommen werden konnte.
Heutzutage sind nur die Rückgabewerte 0 für fehlerfreie Ausführung
oder 1 für Fehler üblich.
Der Statuscode wird entweder über die return-Anweisung der main()-Funktion festgelegt oder als Argument der Funktion
void exit(int statuscode);
Die Funktion exit() kann benutzt werden, um ein Programm
zu beenden, ohne dass das Ende des Funktionskörpers der
main()-Funktion oder die return-Anweisung der
main()-Funktion erreicht wird.
Der Prototyp der Funktion steht unter POSIX in der Datei stdlib.h
bzw. unistd.h, unter Windows in der Datei process.h.
Quelle: CERT C Coding Standard 〈1〉
1 | http://www.securecoding.cert.org |