Seite 1 von 1

Übergabeparameter (Übung aus Tutorial)

Verfasst: Mi Mär 04, 2015 10:57 pm
von biggy2706
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!!!

Re: Übergabeparameter (Übung aus Tutorial)

Verfasst: Mi Mär 04, 2015 11:44 pm
von Nemo
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.

Re: Übergabeparameter (Übung aus Tutorial)

Verfasst: Do Mär 05, 2015 3:43 pm
von Xin
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.