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