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

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";

}

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