Optionen machen?



  • Hi Leute !
    Ich wollte mal Fragen wie ich optionen schreieben kann ? Also wenn ich das Program Test habe möchte ich dazu noch verschieden Optionen zur Auswahl haben z.B. Test -help oder Test -start. Ich weis halt nicht wie ich den im Quellcode schreiebn soll kann mi jemand sagen wie ?



  • das ganze geht mit jedem C- Programm eigentlich ziemlich leicht und zwar nennen sich die Parameter, die du Optionenen nennst, Übergabeparameter. Die Parameter kannst du in der main übergeben, wobei der erste Parameter ein Counter der Paramter ist, und der zweite dann ein Array von zeichenketten, in der die Parameter gespeichert werden können. Beispielweise kann ein Programm zum öffnen einer Datei so aussehen:

    int main (int argc, char** argv)
    {
    
    char* filename = argv[1];
    int leaveOpen = argv[2];
    char* readonly = *argv[3]; //nur 1 Character
    
    //datei öffnen
    //datei ausgeben
    
    return 0;
    }
    


  • fluxy schrieb:

    int main (int argc, char** argv)
    {
    
    char* filename = argv[1];
    int leaveOpen = argv[2];
    char* readonly = *argv[3]; //nur 1 Character
    
    //datei öffnen
    //datei ausgeben
    
    return 0;
    }
    
    int leaveOpen = argv[2];
    

    Das wird so nicht gehen. Ich gehe davon aus dass du dich verschrieben hast.
    Du müsstest den String vorher zunächst in einen int konvertieren.



  • Ja wenn argv[2] aber nur einen char groß ist würds gehen :p



  • david_14 schrieb:

    Ja wenn argv[2] aber nur einen char groß ist würds gehen :p

    argv[2] ist ein pointer... denn kann man in der regel schon in einen int reinquetschen. einfach mit dem resultat, dass der int dann den wert einer speicheradresse hat, die vom OS mehr oder weniger zufällg zugewiese wurde.



  • hm stimmt argv ist ja ptr auf ptr 🙂



  • Ich versteh immer noch nicht so ganz was das int argc, char** argv in der Klammer macht. Kann mir das mal jemand erklären ?



  • Also:
    main bekommt vom Laufzeitsystem 2 Parameter übergeben. Der erste, ein int, gibt an, wieviele mit Leerzeichen getrennte Angaben auf der Kommandozeile beim Aufruf des Programms gemacht wurden (inklusive des Programmnamens, deswegen ist dieser meist argc genannte Wert immer >= 1).
    Der zweite Parameter (meist argv genannt) ist ein Array von Pointern auf C-Strings (also char-Arrays), die in der gleichen Reihenfolge wie auf der Kommandozeile angegeben die Optionen enthalten. Dabei ist argv[0] immer der Programmname bzw. der Name der auführbaren Datei.



  • Aha also habe ich dann diese optionen:

    char* filename = argv[1];
    int leaveOpen = argv[2];
    char* readonly = *argv[3];

    oder wie ?



  • und das missverständnis zu klären argv ist nen pointer auf nen string, beziehungsweise auf nen Array von Chars. Das muss deswegen kein int sein, weil jeder Char in der Zeichenkette seina Adresse hat und du mit *argv[2] auf den ersten character des 2. Arguments zugreifen kannst.



  • und das missverständnis zu klären argv ist nen pointer auf nen string, beziehungsweise auf nen Array von Chars. Das muss deswegen kein int sein, weil jeder Char in der Zeichenkette seina Adresse hat und du mit *argv[2] auf den ersten character des 2. Arguments zugreifen kannst.


Log in to reply