Frage zurr Anweisung bei schleifen



  • Moin Leute,

    kann mir vlt einer weiterhelfen? habe ein problem und zwar möchte ich, dass diese if schleife unter c++ läuft...aber mein compiler(g++) medet mir immer einen fehler)

    if(argv[1]=='-h')
       {
          cout << "Hilfe";
       }
    

    was ist hier falsch?

    mfg black Sheep



  • '-h'



  • habe ich dies nicht gemacht?



  • if (strcmp(argv[1], "-h") == 0)
        std::cout << "Hilfe" << std::endl;
    

    ... naja ... aber musst schon gucken ob überhaupt nen Parameter übergeben wurde (argc gibt an wie viele) ...



  • black Sheep007 schrieb:

    Moin Leute,

    kann mir vlt einer weiterhelfen? habe ein problem und zwar möchte ich, dass diese if schleife unter c++ läuft...aber mein compiler(g++) medet mir immer einen fehler)

    if(argv[1]=='-h')
       {
          cout << "Hilfe";
       }
    

    was ist hier falsch?

    mfg sHeepy

    Moin,

    also erstmal inhaltlich:
    1.) Mit ' (einfaches Gänsefüßchen) kennzeichnet man einen char ("Charakter = Buchstabe ... ein Buchstabe). Du gibst aber einen "char[]" ("Charakterarray" = Buchstabenkette ... mehrere Buchstaben an), die man mit " (doppeltes Gänsefüßchen) kennzeichnet: '-h' => "-h"
    2.) Vergleicht man Charakterarrays mit == , erhält man üblicherweise nicht das Gewünschte. Deshalb

    • entweder (my favorite) Strings verwenden: string(argv[1]) == "-h"
    • oder mit "C-Mitteln" : strcmp(argv[1], "-h") == 0

    Nun zum "Formalen":

    • negativ: "if" hat nichts mit einer "Schleife" zu tun
    • negativ: "Compiler meldet Fehler" .... warum liest Du den nicht und gibst den hier an ? Der schreibt Fehler nicht aus Langeweile
    • positiv: Du gibst ein aussagekräftiges Codebeispiel.
    • positiv: Du gibst Compiler an.

    Immerhin 50% Trefferquote. 😉

    Gruß,

    Simon2.



  • Du vergleichst auf den datentyp char. Ein char ist ein Zeichen. Aus wievielen zeichen aber besteht '-h' ?

    Was Du machen willst ist eher sowas wie if( !strcmp(argv[1], "-h") )

    nebenbei, if ist keine Schleife... Schleifen sind for, while...


Anmelden zum Antworten