Übergabeparameter (Übung aus Tutorial)

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
biggy2706
Beiträge: 1
Registriert: Mi Mär 04, 2015 8:11 pm

Übergabeparameter (Übung aus Tutorial)

Beitrag von biggy2706 » Mi Mär 04, 2015 10:57 pm

Hallo zusammen!
Ich arbeite mich gerade durch das C-Tutorial und stecke gerade etwas fest beim fortgeschrittenen Abschnitt "Übergabeparameter". Dazu hätte ich ein paar Fragen.

1)
Bei der Deklaration der main-Funktion werden statt void nun zwei Parameter angegeben
int main( int argc, char* argv[] )
Bedeutet das nun, dass die Funktion einen Integer und einen Pointer auf ein charakter-array als Eingabe bekommt und einen Integer liefert? Warum einen Pointer, es werden doch durch die Eingabe Werte angegeben und keine Adresse? Also die eigentliche Frage sollte wohl sein wie genau die main-funktion definiert ist?

Am Ende der Lektion wird vorgeschlagen etwas zu experimentieren.
2) Wie kann man die Argumente auf Gültigkeit prüfen, wie verwendet man dazu isdigit()?
3) Wie fügt man die Optionen "-addition" und "-subtraction" hinzu?

Vielen lieben Dank für Eure Hilfe!
Ich hoffe ich habe beim suchen im Forum keinen Thread zu diesem Thema übersehen.
Liebe Grüße biggy

PS: Danke für diese tolle Seite und die Tutorials!!!

Nemo
Beiträge: 37
Registriert: Sa Mär 02, 2013 3:18 pm

Re: Übergabeparameter (Übung aus Tutorial)

Beitrag von Nemo » Mi Mär 04, 2015 11:44 pm

1) Es handelt sich dabei um keinen Pointer auf einen Char-array, sondern um einen Array von Zeigern auf Chars/Char-Arrays. Dadurch kann man leicht auf mehrere Übergabeparameter zugreifen, da jeder Zeiger auf ein Wort zeigt.

2) isdigit überprüft einen Char darauf ob es sich um eine Zahl handelt, daher kann man es verwenden, wenn das Argument eine Zahl sein muss. Wenn das Argument anderen Kriterien entsprechen soll, muss man eventuell selbst Funktionen schreiben, die das Argument überprüfen.

3) In dem man mit strcmp argv[1] darauf überprüft, ob es sich um "-addition" oder "-subtraction" handelt und die dementsprechende Funktion aufruft etwa so:

Code: Alles auswählen

if( !strcmp( argv[1], "-addition" ) )
{
//Addition
}
if( !strcmp( argv[1], "-subtraction" ) )
{
//Substraktion
}
In dem Tutorial sollten Beschreibungen von strcmp und isdigit verlinkt sein.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Übergabeparameter (Übung aus Tutorial)

Beitrag von Xin » Do Mär 05, 2015 3:43 pm

biggy2706 hat geschrieben:Hallo zusammen!
Ich arbeite mich gerade durch das C-Tutorial und stecke gerade etwas fest beim fortgeschrittenen Abschnitt "Übergabeparameter". Dazu hätte ich ein paar Fragen.

1) Bedeutet das nun, dass die Funktion einen Integer und einen Pointer auf ein charakter-array als Eingabe bekommt und einen Integer liefert? Warum einen Pointer, es werden doch durch die Eingabe Werte angegeben und keine Adresse? Also die eigentliche Frage sollte wohl sein wie genau die main-funktion definiert ist?
Das will ich zum Verständnis nur etwas schärfer formulieren:
Du bekommst die Anzahl der Argumente und die Argumente bekommst Du als C-Strings verpasst.
Warum Pointer? Der (char *) zeigt immer auf den ersten(!) char des Arguments. Dahinter können weitere Chars folgen bis Du ein Nullbyte findest.
Warum Array? Du kannst mehrere Parameter (char *) haben, deren erster Charakter jeweils an einer anderen Stelle im Speicher steht.

zu 2) und 3) kann ich nur auf Nemo verweisen.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten