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

Veränderung (letzte Änderung) (Korrektur, Autor, Normalansicht)

Verändert: 3c3
Warum ist der Vergleich c == "Irgendetwas" falsch, obwohl c ein Zeiger auf char ist, der auf eine Zeichenkette mit dem Inhalt "Irgendetwas" zeigt?
Warum ist der Vergleich [[Schrift][Art=Courier]p_string == "Irgendetwas"]falsch, obwohl [[Schrift][Art=Courier]p_string]ein Zeiger auf char ist, der auf eine Zeichenkette mit dem Inhalt "Irgendetwas" zeigt?

Verändert: 7c7
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. Sie sind nicht schon dann gleich, wenn an den beiden Stellen auf die sie zeigen der gleiche Inhalt steht.
Ein Vergleich mit [[Schrift][Art=Courier] == ] 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.

Verändert: 9c9
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 uebergebenenen Zeichenketten nicht unterscheiden.
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.

Entfernt: 24d23
==Diskussion==

Verändert: 26c25
Nur eine Kleinigkeit: Mir würde besser gefallen, wenn in der Frage nicht c als Bezeichner für einen Zeiger verwendet würde.
==Diskussion==

Verändert: 29c28
KategorieCee
KategorieC KategorieCee

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