zeiger & while-schleife
-
wie kann ich in C++ mit einem Zeiger und einer while-schleife ein char feld (char feld[]="Dagobert";) rückwärts ausgeben ??
-
SP965 schrieb:
wie kann ich in C++ mit einem Zeiger und einer while-schleife ein char feld (char feld[]="Dagobert";) rückwärts ausgeben ??
zuerst ans ende laufen
char* p=feld; while(*p!='\0') ++p;
und dann zurück an den anfang.
do { --p; cout<<*p; }while(p!=feld);
klappt aber nicht, wenn das feld von anfang an leer war, also ein
if(*p!='\0') { ... }
ganz außenrum.
ob jemand ne einfachere version findet, wenn er strlen benutzt?
-
Kann man sich den Test nicht sparen und statt der Fußgesteuerten ne kopfgesteuerte Nehmen?
char * p = feld + stelen(feld); while(p != feld){ cout << *p--; }
-
hm..
for(short i = strlen(feld)-1; i >=0;i--)cout<<feld[i]; ?
-
Helium schrieb:
Kann man sich den Test nicht sparen und statt der Fußgesteuerten ne kopfgesteuerte Nehmen?
char * p = feld + stelen(feld); while(p != feld){ cout << *p--; }
ich bringe keinem nube postdekrement-ausdrücke bei, daher war das bereits außer jeder diskussion.
obige schleife beendet, wenn p==feld, gibt also feld[0] nicht mehr aus.
-
Stimmt.
char * p = feld + stelen(feld)+1; while(p != feld){ cout << *--p; }
oder du nimmst einen fertigen Algorithmus der STL
-
reverse_copy(p, p+strlen(p), ostream_iterator<char>(cout));
Ok. Es fehlt die while-Schleife