Zum Inhalt springen

Konsolenprogramm mit Parameterübergabe


Empfohlene Beiträge

Geschrieben

Hallo,

ich habe folgendes Problem undzwar soll ich ein Programm erstellen was per cmd aufgerufen wird und dann direkt beim aufruf parameter übergeben bekommen soll.

Das Programm soll beim aufruf eine anzahl von sekunden als parameter übergeben bekommen, welche ich dann in der Konsolenanwendung verarbeiten möchte.

Das ganze soll in c++ geschrieben werden und eine Konsolenanwendung sein.

Den programmstart stelle ich mir in cmd wie folgt vor:

meinProgramm 60 (um den Parameter 60 sekunden anzugeben).

Kann mir da jemand sagen wie das funktioniert?

Danke

Geschrieben

Moin,

Kann mir da jemand sagen wie das funktioniert?

Klar:

int main(int argc, char* argv[])

;)

argc == Anzahl der Übergabeparameter

argv == Array auf die übergebenen Argumente als char-Zeiger

Geschrieben

ok danke für die schnelle Dntwort.

jetzt habe ich nur das Problem, das ich den Parameter als char habe, brauche ihn aber als int um ihn weiter verarbeiten zu können.

Geschrieben

nei leider nicht aber ich werd dann mal google befragen danke!

Edit:

Habe google befragt und es klappt danke für deine Hilfe hier das Programm

#include <iostream>

#include <windows.h>

using namespace std;

int i,eingabe;

int main(int argc, char* argv[])

{

eingabe=atoi(argv[1]);

for (i=eingabe;i>0;i--)

{

Sleep(1000);

system("CLS");

cout<<"Noch "<<i<<" Sekunden";

}

system("CLS");

}

Geschrieben

ja wenn kein gültiger wert angegeben wir läuft das programm so durch ohne wartezeit auch bei buchstaben oder ähnliches.

Habs aber auch noch was abgeändert:

#include <iostream>

#include <windows.h>

using namespace std;

int i,eingabe;

int main(int argc, char* argv[])

{

eingabe=atoi(argv[1]);

if (eingabe>0)

{

for (i=eingabe;i>0;i--)

{

Sleep(1000);

system("CLS");

cout<<"Noch "<<i<<" Sekunden";

}

}

else

{

cout<<"\n\nDer Parameter fuer die Wartezeit muss in folgendem Format eingegeben werden: \n";

cout<<"\nwarte n (n=Zeit in Sekunden)\n\n";

}

}

hier die EXE warte.zip]warte.zip

Geschrieben
ja wenn kein gültiger wert angegeben wir läuft das programm so durch ohne wartezeit auch bei buchstaben oder ähnliches.

Ich würde mindestens argc überprüfen, da sonst undefiniertes Verhalten entstehen kann. argv auf Plausibilität zu überprüfen kann natürlich auch nicht verkehrt sein.

Geschrieben
sobald was falsches eingegeben wird liefert atoi den wert 0 zurück

Und wenn nichts als Parameter übergeben wird greifst du trotzdem einfach auf argv[1] zu.

In diesem Fall hast du Glück, da per Definition argv[argc] NULL sein _sollte_.

Aber solltest du das immer so machen und ohne Parameter z.B. auf argv[2] zugreifen wollen, und ohne jegliche Prüfung dies sofort in eine weiterverarbeitende Funktion schickst, kannst du nichtmehr vorraussagen was passiert.

Geschrieben

Bist du dir da sicher, dass da IMMER "NULL" drin steht. Ich vermute mal er hat einfach Glück, dass der Speicher gerade nicht verwendet wird....

Einfach vorher abfragen:

if (argc == 1)

{

...

}

else

{

cout << "Bitte genau einen Parameter eingeben";

}

Geschrieben

Oh, hab wohl was falsches behauptet

if (argc == 2)

{

...

}

else

{

cout << "Bitte genau einen Parameter eingeben";

}

da der Programmname ja der erste Parameter ist...

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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