Flori Geschrieben 24. Juni 2002 Geschrieben 24. Juni 2002 Hallo, habe mal wieder ne Einsteiger-Frage in Sachen C/C++ : Indem ich die main()-Funktion als "int" definiere, besteht ja die Möglichkeit Parameter direkt beim Programmaufruf zB. von der DOS-Ebene aus zu übergeben : Beispiel : programm /a /r /w Habe mir mal zum Einstieg folgendes Prog gebastelt, das einfach Parameter übernimmt, wiederausgibt und bei der Übergabe eines bestimmten Parameters ("/w") Text ausgeben soll. Sieht dann so aus : #include <stdio.h> #include <iostream.h> int main(int nArg, char *pszArgs[]) { cout << "Argumente von " << pszArgs[0] << "\n"; for (int i = 1; i < nArg; i++) { cout << i << ":" << pszArgs[i] << "\n"; if (pszArgs[i] == "/w") { cout << "Ahaaaaaaaaaaaaaa!!!!!!!\n"; } } cout << "Das wars\n"; return 0; } Die Ausgabe der eingelesenen/übergebenen Parameter funktioniert auch, nur die Ausgabe des "Ahaaaaaaa..." klappt nicht, wenn ein Parameter gleich "/w" ist. :-/ Mir ist klar, dass das ja wahrscheinlich nur ne Mini-Sache ist, aber als "Frischling" in C wär ich dankbar, wenn mir da jemand auf die Sprünge helfen könnte ! Danke schon mal vorab, Flo Zitieren
Goos Geschrieben 24. Juni 2002 Geschrieben 24. Juni 2002 Hi Flo, das liegt daran, dass dein pszArgs nur ein Zeiger auf das String Array deiner Parameterübergabe i ist. Du koenntest es also mit pszArgs[0] == '/' && pszArgs[1] == 'w' versuchen oder halt mit einem strcmp(pszArgs, "/w") == 0. Goos Zitieren
Orffi Geschrieben 24. Juni 2002 Geschrieben 24. Juni 2002 Indem ich die main()-Funktion als "int" definiere, besteht ja die Möglichkeit Parameter direkt beim Programmaufruf zB. von der DOS-Ebene aus zu übergeben Das ist so nicht richtig! wenn man die main-Funktion mit int definiere (eine andere Möglichkeit läßt der Standard ga nicht), dann bedeutet dies, daß ein int Wert zurückgeliefert wird. int main(int nArg, char *pszArgs[]) int nArg und char *pszArgs[] bemächtigt die main-Funktion (und damit das Programm) Parameter von der Kommandozeile zu übernehmen. # include <iostream> # include <cstdlib> int main(int nArg, char *pszArgs[]) { using namespace std; cout << "Argumente von " << pszArgs[0] << "\n"; for (int i = 1; i < nArg; i++) { cout << i << ":" << pszArgs[i] << "\n"; if ( !strcmp( pszArgs[i], "/w" ) ) { cout << "Ahaaaaaaaaaaaaaa!!!!!!!\n"; } } cout << "Das wars\n"; } strcmp ist das "Zauberwort". mit strcmp vergleicht man char-Strings. HTH Jan PS: Niemals sollte man <stdio.h> und <iostream> mixen. Du brauchst hier auch kein stdio.h, oder besser, weil wir uns hier in C++ befinden <cstdio>. PPS: Goos war einen Tick schneller, aber da ich es schon getippt hatte, habe ich es trotzdem gepostet... Zitieren
Flori Geschrieben 24. Juni 2002 Autor Geschrieben 24. Juni 2002 Ahja ! Thx Goos für die schnelle Antwort. Mhmh...i see...da sind wieder die "beliebten Zeiger". *g* So im Nachhinein hab ich's jetzt schnell verstanden - nur eben selber draufkommen ist bezüglich Zeiger noch nicht ganz so leicht und die Funktionen kenn ich eben noch längst nicht alle... Nunja, "Übung macht den Meister" - wo sonst ist das wohl passender als beim Programmieren. Nochmal danke. Komme bestimmt bald mit der nächsten Frage. Nachtrag: @Orffi, auch danke für deine Tipps. Jeder Rat hilft mir beim Lernen ! PS: Niemals sollte man <stdio.h> und <iostream> mixen. Du brauchst hier auch kein stdio.h, oder besser, weil wir uns hier in C++ befinden <cstdio>. Ups, das ist wohl noch stehengeblieben von meinen reinen C-Übungen von vorhin. Gruss Flori Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.