iphpbb - Forenarchiv: Archivbeitrag des Forums Tutorials.at
Verfügbare Informationen zu "strings mit if"

  • Qualität des Beitrags:
  • Beteiligte Poster: dani93 - DrPhil_Guth - wirthi - detewe89
  • Forum: Tutorials.at
  • Forenbeschreibung: Programmierforum
  • aus dem Unterforum: C / C++
  • Antworten: 5
  • Forum gestartet am: Mittwoch 19.04.2006
  • Sprache: deutsch
  • Link zum Originaltopic: strings mit if
  • Letzte Antwort: vor 9 Monaten, 4 Tagen, 6 Stunden, 18 Minuten
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
Weitere Beiträge aus diesem Forum
Error - gepostet von xxx am Freitag 01.12.2006
Zeichen einzeln einlesen - gepostet von bubblelol am Donnerstag 20.09.2007
Compiller zeigt alles an - gepostet von Wüstling am Donnerstag 10.05.2007
Suche: [color=red]ADA 2005 Compiler[/colo, [co und[color=red - gepostet von anarchist am Sonntag 20.05.2007
Mini-Pascal-Programm - gepostet von TSK am Donnerstag 31.05.2007
Brauche Hilfe - gepostet von Belphegor am Montag 05.03.2007
goto - gepostet von Moritz am Sonntag 23.12.2007
Ähnliche Beiträge
[03.08.05] Viframa - Cristalle (Solar Strings & Lead Rem - DJ Headhunter (Mittwoch 03.08.2005)
Art of Strings - Worms - DucSchneider (Samstag 21.04.2007)
Strings - abbafreak (Montag 03.09.2007)
Strings - Bloody-Mad-Looney (Freitag 18.08.2006)
Strings - maximuss (Mittwoch 25.10.2006)