char pointer vergleich
-
Hallo Zusammen,
Ich möchte in einer if-Abfrage einen char-pointer mit einer Zeichenkette vergleichen. Der Vergleichsausdruck wird aber nie true, wenn die Adresse des Pointer auf die er zeigt die gleiche Zeichenkette enthält.
(Ausschnitt)
char *ptr; ptr = strtok(row, "\n\t "); // row enthält eine "gestückelte" Zeichenkette if(*ptr != '75C') { ... }
Wo liegt hier mein Fehler?
Danke!
-
snowy schrieb:
...einen char-pointer mit einer Zeichenkette vergleichen.
Du hast deinen Fehler bereits richtig ausgedrückt.
Der Wert eines Pointers ist eine Adresse. Mit Deferenzierung wird der Wert an der Adresse ausgedrückt, was bei einem char Zeiger der erste char ist.
Deine Zeichenkette ist ebenfalls eine Adresse, an der die char beginnen.Du wirst also einen String-Vergleich weder durch den Vergleich der Adressen, noch der ersten Zeichen erreichen können. Der richtige Weg wäre der Vergleich jedes Zeichens der beiden Strings. Dafür gibt es die Funktion strcmp.
-
Danke für Deine schnelle Antwort Youka.
Mit strcmp habe ich es folgendermaßen lösen können:
if(strcmp(ptr,"75C") != 0) { ... }