Fragen zu argv und argc



  • Hallo
    Ansich verstehe ich argc und argv in der Funktion main().

    argc = Zeigt an wieviele Parameter übergeben worden
    argv[0]= Programmname
    argv[i]= i. Parameter

    Was genau mein die mit "weiteren Parameter" übergeben? Wie übergebe ich denn dem Programm weitere Parameter?
    Ich öffne doch nur die .exe und go.?!

    Würde mich sehr sehr freuen, wenn mir mal jemand ein Beispiel gibt, wo mehrere Parameter übergeben werden.

    Vielen DAnk!



  • Hallo,

    z.B.: program.exe param1 param2 ...

    Leerzeichen trennen die Parameter, so kann die für den Programmstart verantwortliche Routine (also die, die letztlich main aufruft) die Parameter in argv[1], argv[2) usw. bereit stellen.

    MfG,

    Probe-Nutzer



  • Du kannst diese Parameter in jeder Entwicklungsumgebung auch einstellen. Sowohl für den Debug als auch den Release-Mode.
    Meist unter "Projekt-Einstellungen" irgendwo zu finden.

    D.h. du musst die erzeugte Executable nicht unbedingt manuell in der Konsole starten.



  • kann ich auch dateien als parameter übergeben?

    programm.exe config.ini kopie.ini

    ???



  • Klar, wenn du deine Parameter argv[1], argv[2] dann auch korrekt auswertest. Du kannst alles mögliche übergeben. Was damit hinterher passiert, ist allein deine Sache.



  • was du da übergibst, ist doch Interpretationssache des Programms.

    MfG,

    Probe-Nutzer



  • ja ich hab nen tool, was ne .ini datei bearbeitet und die änderung in einer separaten datei abspeichert.

    und die beiden dateien wollte ich als parameter übergeben und halt mit argc[] im code entsprechend benutzen.



  • Dann mach das doch einfach. Prüfe aber ob dann "argc == 3" ist und ob die Dateinamen in Ordnung sind ( ein der beiden Dateien muss ja existieren ). Die zweite Datei darf vielleicht garnicht existieren.



  • oh-jonney schrieb:

    kann ich auch dateien als parameter übergeben?
    programm.exe config.ini kopie.ini

    Ob das Dateien sind oder Peng: egal. argv[1] ist eben nur ein C-String und in diesem Fall einer, der der Name einer Datei sein könnte. Du kannst natürlich versuchen, die Datei in Deinem Programm zu öffnen. 🙂



  • Sebastian Pizer schrieb:

    oh-jonney schrieb:

    kann ich auch dateien als parameter übergeben?
    programm.exe config.ini kopie.ini

    Ob das Dateien sind oder Peng: egal. argv[1] ist eben nur ein C-String und in diesem Fall einer, der der Name einer Datei sein könnte. Du kannst natürlich versuchen, die Datei in Deinem Programm zu öffnen. 🙂

    Wie mach ich am besten eine Prüfung, dass mein Programmcode nur ausführen soll, wenn er auch ein Parameter (sprich argv[1]) hat.???



  • oh-jonney schrieb:

    Wie mach ich am besten eine Prüfung, dass mein Programmcode nur ausführen soll, wenn er auch ein Parameter (sprich argv[1]) hat.???

    Was war argc gleich nochmal...?



  • oh-jonney schrieb:

    Sebastian Pizer schrieb:

    oh-jonney schrieb:

    kann ich auch dateien als parameter übergeben?
    programm.exe config.ini kopie.ini

    Ob das Dateien sind oder Peng: egal. argv[1] ist eben nur ein C-String und in diesem Fall einer, der der Name einer Datei sein könnte. Du kannst natürlich versuchen, die Datei in Deinem Programm zu öffnen. 🙂

    Wie mach ich am besten eine Prüfung, dass mein Programmcode nur ausführen soll, wenn er auch ein Parameter (sprich argv[1]) hat.???

    int main(int argc, char *argv[]) {
    
      if(argc != 1) {    // Oder < 1?
        std::cerr << "Parameter fehlt!" << std::endl
        return 1;
      }
    
      // Hier der eigentliche Job
    
      return 0;
    }
    

    Stefan.



  • Stefan fehlt nicht dein else?
    Weil wenn er in der If drinne ist und fertig ist, geht er doch wieder raus und macht weiter ?!



  • jonnyyy schrieb:

    Stefan fehlt nicht dein else?
    Weil wenn er in der If drinne ist und fertig ist, geht er doch wieder raus und macht weiter ?!

    Also ich will, wenn er in die if reingeht, dass er alles andere abbricht bzw. erst gar nicht anfängt...sprich wenn er in der if ist, soll er das programm beenden



  • Hol Dir ein schlaues Buch zum Lernen von C++. Kannst darin auch nachgucken, was return macht.



  • return beendet die aktuelle Funktion, in dem Fall ist das die main(...). D.h. das return beendet in dem Fall das komplette Programm.


Anmelden zum Antworten