Teil 14 : Nützliches Allerlei |
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> |
#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
int status;
status = system ("dir"); |
Der Rückgabewert enthält eine 0 , wenn das Programm
Ordnungsgemäß lief, anderfalls eine -1 .
Typenwandlung (Casting) |
Dies erreicht man indem man der eigentlichen Variablen in Klammern den
gewünschten Variablentyp voranstellt:
( Zieltyp ) Variable |
Noch sieht das ganze etwas verworren aus, deshalb schnell ein Praxisbeispiel.
#include <stdio.h>
#include <math.h> void main ( void )
int i; double fliesz_zahl = 2.34;
i = ( int ) fliesz_zahl; d = pow ( (double) i , fliesz_zahl ); |
Vorsicht: Das geht nicht mit Zeigern!
Zu beachten ist: Wenn z.B. eine Typenumwandlung von double zu
integer
erfolgt
, so wird der Nachkommateil abgetrennt. Generell muß man bedenken,
das bei einer Typenumwandlung eventuell information verschwinden kann,
z.B. der Nachkommaanteil.
double n = atof ( char *c ) |
Es wird ein String in eine double-Größe umgewandelt. Dabei werden Vorzeichen beachtet , sowie Exponentialschreibweisen ( E oder e mit einer angehängten Ganzzahl ).
Eingebunden werden muß:
#include <math.h> |
Dann sieht ein vollständiges Beispiel so aus:
#include <stdio.h>
#include <math.h> void main ( void )
n = atof ( "2.4354" ); printf ("%lf" , n ); |
Nach dem ausführen sollte auf dem Bildschirm folgendes erscheinen:
2.4354 |
int n = atoi ( char *c ) |
Wieso sollte, was bei Fließkommazahlen geht, nicht auch bei Ganzzahlen gehen ? Daher gibt es atoi , welches den übergebenen String in einen Integerwert umwandelt.
Im Gegensatz zu atof muß hie folgende Library eingebunden
werden:
#include <stdlib.h> |
Als Programm sieht das dann so aus:
#include <stdio.h>
#include <stdlib.h> void main ( void )
n = atoi ( "2.4354" ); printf ("%lf" , n ); |
Als Ergebnis erhält man hier:
2 |
Parameterübergabe an das Hauptprogramm |
bisher sah unser Hauptmodul immer so aus
void main ( ) |
Hier hatten wir bisher leere Klammern. Doch wenn wir in anderen Modulen
dort Parameter stehen haben können, warum nicht auch hier ? Aber auch
hier gibt es eine besonderheit von main . 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.
...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!