Parameteruebergabe bei Prog-Aufruf



  • Hallo habe folgendes Problem:
    Beim Programmaufruf soll der Name der Datei in Form von datei.exe datei.dat uebergeben werden. Folgende Codeschnipsel habe ich mir zusammengesucht, komme jetzt aber nicht weiter:

    Vielen Dank im Voraus !

    main(int argc, char *argv[]){
    char *fp
    switch(argc)      /* Kommando-Parameter ueberpruefen: 1: Dateiname fehlt, 2: Datei oeffnen, def: zuviele Parameter */
      {
        case 1: cout<<"\n\nSie muessen die Datei als Parameter angeben (z.B. datei.exe datei.dat)!"<<endl;
                cout<<"___________________________________________________\n\n"<<endl;
                return 0;
        case 2: if (ofstream ausgabe(argv[1], "w") != 0)   /* Wenn Dateiname existiert: Datei im Schreibmodus oeffnen */
                  fp = ofstream ausgabe(argv[1], "w");
            else                              /* Wenn nicht: Programmabbruch */
            {
              cout<<"\n\nDie Datei \"argv[1]\" existiert nicht!!! - Bitte Schreibweise ueberpruefen!!!\n\n"<<endl;
                  cout<<"___________________________________________________\n"<<endl;
              return 0;
            }    
                break;
        default: cout<<"\n\nZu viele Parameter angegeben. Syntax: datei.exe <Dateiname>\n"<<endl;       
                 cout<<"___________________________________________________\n"<<endl;
                 return 0;
      }
    
    }
    


  • Hm,

    wie war die frage ?

    [ Dieser Beitrag wurde am 21.03.2003 um 10:58 Uhr von Knuddlbaer editiert. ]



  • Okay, und was willst du wissen?

    Das Prog kann net funktionieren weil:
    argc sagt Dir wieviel Parameter übergeben worden sind.
    Wenn jetzt datei.dat übergeben wird, ist argc = 1 ...

    Du verstehst?

    [ Dieser Beitrag wurde am 21.03.2003 um 11:04 Uhr von Legolas editiert. ]



  • Ok Problem ist geloest ! Vielen Dank !



  • Original erstellt von Legolas:
    argc sagt Dir wieviel Parameter übergeben worden sind.
    Wenn jetzt datei.dat übergeben wird, ist argc = 1 ...

    Blödsinn, argc ist immer >= 1 da der Programmname selbst ebenfalls mit ausgewertet/ gezählt wird.

    probier doch mal sowas aus:

    #include <iostream>
    int main(int argc, char *argv[])
    {
        std::cout << argc;
    }
    


  • Du hast Recht und ich bin doof 🙄 😞

    Aber irgendwas muss es doch gebracht haben, sonst würde es jetzt ja net gehen 🙂

    [ Dieser Beitrag wurde am 21.03.2003 um 11:42 Uhr von Legolas editiert. ]



  • Vielleicht hat tplehn ja "Ströme und Dateien in C++" in den FAQ gelesen, sein Code war nämlich vorher rundum furchtbar falsch.


Log in to reply