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!!!
Übergabeparameter (Übung aus Tutorial)
Re: Übergabeparameter (Übung aus Tutorial)
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:
In dem Tutorial sollten Beschreibungen von strcmp und isdigit verlinkt sein.
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
}
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Übergabeparameter (Übung aus Tutorial)
Das will ich zum Verständnis nur etwas schärfer formulieren: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?
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.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.