Warum funktioniert mein Programm C++ nicht?
Ich mache grade einen C++ Kurs und das Prigramm das ich geschrieben habe funktioniert nicht. Ich weiß nicht Warum. Was habe ich falsch gemacht?
3 Antworten
Naheliegend ist
if(text == "open"),
wie es hier schon vorgeschlagen wurde.
Aber auch das ist falsch, denn dann werden nicht etwa die Inhalte der Zeichenketten verglichen, sondern nur die Adressen, wo sie im Speicher liegen. Die sind aber garantiert verschieden.
Richtig wäre
if(strcmp(text,"open") == 0).
if (text="open")
Ein einfaches Gleichzeichen ist eine Zuweisung, und für char[] ist das gar nicht erlaubt.
Vergleiche macht man mit == (also text=="open"), was aber bei char[] nur die Zeiger vergleicht, und die sind immer verschieden.
Abhilfe: Teste mit 0==strcmp(text, "open"), oder definiere text als std:string.
Und lies künftig die Meldungen des Compilers. Dann brauchst Du nicht jedes mal nachzufragen.
Soweit ich das sehe hat die If-Abfrage keine {} Klammern. Außerdem muss bei dem if text == "open" anstelle von text = "open", weil = einen Wert zuweist und == diese Vergleicht. Richtig währe der letzte Teil mit dem If wahrscheinlich so:
if (text == "open") {
cout << text;
}
Wenn im if-Zweig (auch bei else) nur eine einzige Anweisung steht, kann man die geschweiften Klammern weglassen.
Der == Operator für char-Felder vergleicht bei C und C++ nur die Speicheradressen, aber nicht die Inhalte.
Kann sein, dass es bei C# eine bessere Lösung gibt.