pointer ausgabe
-
hallo.
ich möchte in einer schleife einen char* ausgeben. nur weiss ich nicht genau
wann ich die schleife abbrechen soll? wie überprüfe ich das ende eines pointers.\0 geht nicht.
while (*p!="\0") { std::cout << *p; p++; }kann mir jemand helfen?
-
Wenn dein Pointer nicht auf einen String (der ist ja nullterminiert), sondern auf irgendein Array zeigt, dann musst du beim Anlegen des Arrays die Länge speichern und an alle Funktionen, die damit was machen wollen, übergeben. An dem Pointer kannst du es nicht sehen.
-
das ging ja fix. ok habe den pointer auf ein array gesetzt. darum gehts auch nicht. danke.
-
callmechris schrieb:
while (*p!="\0") { std::cout << *p; p++; }Übrigens: der Vergleich muss mit '\0' gemacht werden, nicht mit "\0"! Das ist ein großer Unterschied. Du vergleichst nämlich das, worauf p zeigt, mit der Adresse des Stringliterals "\0". Noch einfacher geht's so:
while(*p) //0==FALSE, wenn also eine 0 kommt, ist die Bedingung nicht mehr erfüllt und die Schleife wird beendet. Klappt immer bei nullterminierten Strings (char-Arrays). { std::cout << *p++; //das Inkrementieren (postfix) kann auch direkt hier geschehen, ist aber Geschmackssache. }