Alle Beiträge und Antworten
dani93 - 05.01.2008, 14:10
strings mit if
Hallo
Ich wollte fragen, ob man mit if else auch Strings vergleichen kann.
Code: #include <stdio.h>
#include <conio.h>
int main()
{
char* wort="wort";
if (wort=="wort")
{
printf ("Richtig");
}
else
{
printf ("Falsch");
}
getch();
}
Ich weiß nicht warum, aber hier gibt er immer falsch aus.
DrPhil_Guth - 05.01.2008, 14:20
In C nicht, denn da sind Strings nichts weiter als Zeiger. Und Zeiger werden so lange nicht identisch sein, bis wirklich ein und derselbe string verglichen wird.
Um strings zu vergleichen musst du die funktion strcmp() verwenden.
In C++ siehts allerdings aders aus, da sind strings nämlich objekte. Der == Operator ist für diese objekte überladen, das bedeutet da kannst du sie so verwenden.
wirthi - 05.01.2008, 14:23
Weil ein String intern ein Pointer ist. Zwei verschiedene (oder auch "gleiche") Strings sind dabei auch immer verschiedene Pointer (außer sie kommen aus der gleichen Quelle und es wurden nur die Pointer kopiert).
Was du ja eigentlich willst, ist den Inhalt der Strings zu prüfen. Das geht mit der Funktion strcmp.
Code: #include <string.h>
...
if (strcmp(string1, string2) == 0) {
...
Liefert strcmp 0 zurück, sind die Strings gleich, ansonsten ungleich (bei >0 ist der erste String "größer", bei <0 der zweite; größer bedeutet, dass der erste ungleiche Buchstabe im ASCII-Code einen größeren Wert hat).
dani93 - 05.01.2008, 14:25
OK Danke
Jetzt funktionierts.
Neue Frage:
Warum gehts, wenn ich
Code: char* wort1;
char* wort2;
...
schreib, aber nicht bei
Code: char* wort1, wort2, ...
detewe89 - 05.01.2008, 15:04
Damit würdest Du wort2 nicht als Pointer definieren. Wenn Du ohne Semikolon schreibst, dann so:
Code: char *wort1, *wort2;
Mit folgendem Code, können Sie den Beitrag ganz bequem auf ihrer Homepage verlinken