Veröffentlicht 24. Juni 200223 j 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
24. Juni 200223 j 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
24. Juni 200223 j 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...
24. Juni 200223 j Autor 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
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.