Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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

Geschrieben
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...

Geschrieben

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. ;):D

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. ;):D

Gruss Flori

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...