Offene Cee FAQ / Der Vergleich Von Strings
 
StartSeite | OffeneCeeFAQ/ | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern

Frage

Warum ist der Vergleich p_string == "Irgendetwas"falsch, obwohl p_stringein Zeiger auf char ist, der auf eine Zeichenkette mit dem Inhalt "Irgendetwas" zeigt?

Antwort

Ein Vergleich mit

 == 
ist dann wahr, wenn die beiden verglichenen Operanden gleich sind. In diesem Fall sind die beiden Operanden Zeiger auf char. Diese sind dann gleich, wenn sie auf die gleiche Stelle im Speicher zeigen. Wenn an den beiden verschiedenen Stellen, auf die die beiden Zeiger zeigen, der gleiche Inhalt steht sind die Zeiger nicht gleich.

Wenn Zeichenketten nach dem Inhalt verglichen werden sollen ist dazu die Funktion strcmp() aus der C-Standardbibliothek geeignet. Sie liefert den Wert 0 zurueck, wenn sich die beiden übergebenenen Zeichenketten nicht unterscheiden.

char text[] = "Irgendwas";      /* in dem Array text ist die
                                   Zeichenkette gespeichert */
char *ptr = "Irgendwas";        /* ptr zeigt auf eine
                                   Zeichenkette mit dem gleichen
                                   Inhalt, aber anderer 
                                   Adresse */
assert(ptr != text);            /* Die Adressen der beiden 
                                   Zeichenketten sind 
                                   verschieden */
assert(0 == strcmp(ptr, text)); /* Die Inhalte sind gleich  */

Diskussion


KategorieC KategorieCee
StartSeite | OffeneCeeFAQ/ | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Text dieser Seite ändern (zuletzt geändert: 29. November 2007 8:42 (diff))
Suchbegriff: gesucht wird
im Titel
im Text