Teil 14 : Nützliches Allerlei |
Heute werden wir uns mit Funktionen beschäftigen, die man immer
mal wieder brauchen kann.
int n = system ( char *c ) |
Wollten sie nicht schon immer mal einen Aufruf des Kommandozeileninterpreters
(was für ein Wort) machen oder einfach nur das dir - Kommando
benutzen ? Kein Problem ! Vorher muß noch folgende Library eingebunden
werden
#include <stdlib.h> |
In einem kompletten Beispiel sieht das dann so aus:
#include <stdio.h>
#include <stdlib.h> void main ( void )
printf ("\nRein in die Befehlsebene\n");
status = system ("command"); printf ("\n\nWeiter im Programm\n\n");
|
Ist doch nicht so schwer, wie man es sich dachte. Möchte man nun
die Directory anzeigen, benötigt man nur noch ein simples
#include <stdio.h>
#include <stdlib.h> void main ( void )
printf ("\nSchauen wir uns mal dir Directory an\n"); status = system ("dir \w"); printf ("\n\nWeiter im Programm\n\n");
|
Der Rückgabewert enthält eine 0 , wenn das Programm Ordnungsgemäß lief, anderfalls eine Zahl ungleich Null, wobei der Wert einer Fehlermeldung entspricht. Unter MS-DOS kann man ihn z.B. mittels des Fehlercodes ERRORLEVEL abfragen. Wenn man nun das eigene main-Modul auf diese Weise einen Wert zurückgibt, entspricht dieser dann dem Wert, was das aufrufende Programm zurückgeliefert bekommt. Wenn man oberes Programm nun startet, sieht man das man komfortabel auf diese Weise Programme ausführen kann.
Parameterübergabe an das Hauptprogramm |
Wer kennt das nicht, da ruft man einige Programme mit Parametern auf
und wundert sich: Wie machen die das ? Nichts ist unmöglich.... Auch
ohne Toyota wollen wir dieses kleine Geheimnis lüften. Bisher sah
unser Hauptmodul immer so aus
void main (void ) |
Hier hatten wir bisher leere Übergaben (= void) in den Klammern
im main-Modul. Doch wenn wir in anderen Modulen dort Parameter stehen haben
können, warum nicht auch hier ? Wie wir bisher schon kennenlernten
ist main ein besoneres Modul. Es existieren zwei Standardparameter
argc
und argv , welche wie folgt aussehen.
void main ( int argc , char *argv [ ] ) |
Das erste Argument argc enthält die Anzahl der Parameter
als
Integervariable und argv speichert die einzelnen Parameter
als Strings. Die Übergabe der Parameter wird beim Programmaufruf
vom Betriebssystem übernommen. Folgendes Programm schreibt die
Anzahl und die übergebenen Parameter auf den Bildschirm:
#include <stdio.h>
void main ( int argc , char *argv [ ] )
printf ("\n\nEs wurden folgende %d Parameter uebergeben :\n\n", argc ); for ( zaehler = 0 ; zaehler < argc ; zaehler++ ) printf ("%s ", argv [zaehler] ); |
Wie man sehen kann, hat man so die Möglichkeit auf jeden einzelnen Parameter zuzugreifen. Wenn man Beispielsweise das Programm ckurs.exe nennt und es wie unten ausführt, erhält man folgende Auflistung.
Auffallend ist: das Programm ist immer Parameter argv[0] mit
vollem Pfad. argv[1] ist folglich der erste Übergabeparameter,
und so weiter. So lassen sich zum Beispiel Aufrufparameter oder andere
Startargumente implementieren. So kann man hier einen Parameter -?
einführen, durch den eine kleine Hilfe dargestellt wird, wie man an
dem kleinen Beispielprogramm sehen kann. Dies kann man natürlich weiter
ausbauen, so das mehrere unterschiedliche Parameter existieren.
/*
Beispiel für eine Implementierung eines*/ #include <stdio.h> void main ( int argc , char *argv [ ] )
/* Wenn mindestens ein Parameter angegeben wurde alle durchtesten
*/
{
if (argv[zaehler] == "-?")
printf ("\n\nDas Programm dient zur Demonstration des\n"); printf ("Parameters -? , welcher diesen Text aufrief \n\n"); } else printf ("\n\nProgramm wurde ohne -? aufgerufen\n\n" ); |
...das Obligatorische |
Autor: Sebastian Cyris PCDBascht@aol.com
Dieser C-Kurs dient nur zu Lehrzwecken! Eine Vervielfältigung ist ohne vorherige Absprache mit dem Autor verboten! Die verwendete Software unterliegt der GPL und unterliegt der Software beiliegenden Bestimmungen zu deren Nutzung! Jede weitere Lizenzbestimmung die der benutzten Software beiliegt, ist zu beachten!