Strings umdrehn(spiegeln)

Googlehupf

Erfahrenes Mitglied
Hiho,

ich hab mir gedacht mal Strings zu spiegeln :D...

So wollte ichs machen:

C++:
while(a[x+1] != '\0')
{
  x++; // solange x++ bis ein \0 gefunden wurde
}

while()
{
  b[i]=a[x] //a in b kopieren

  x--; //x zurückzählen
  i++;
}

Die 2. while()-Schleife ist mein Problem ich weis net was ich da hinein schreiben soll.
Wenn ich schreibe a[x] != '\0', dann knan ich lange warten bis einer kommt :D.

Habt ihr bitte ein paar Tipps für mich?

MfG Googlehupf
 
Hallo,

Ich würds irgendwie so versuchen:
C++:
for (int i = 0; i < strlen(a); i++)
{
  b[i] = a[strlen(a) - i];
}

ev. musst du hinten an b noch ein '\0' anhängen.
 
Zuletzt bearbeitet von einem Moderator:
Hey,

es gibt auch schon fertige Funktionen, die das ganze machen.

strrev() ist z.B. so eine. Du gibst in den Klammern das char-Array an, und der gespiegelte string, hängt dann im selbigen char-Array drin.

EDIT: du musst natürlich noch die Headerdatei <string> includieren.

grüße
 
es gibt auch schon fertige Funktionen, die das ganze machen.

strrev() ist z.B. so eine. Du gibst in den Klammern das char-Array an, und der gespiegelte string, hängt dann im selbigen char-Array drin.
strrev gehört allerdings nicht zur Standardbibliothek.

EDIT: du musst natürlich noch die Headerdatei <string> includieren.
Bei C wäre das wenn dann <string.h>, bei C++ <cstring>.

Lösung für C:
C:
int len = strlen(a);
for (int i = 0; i < len; ++i) {
  b[i] = a[len - i - 1];
}
b[len] = '\0';

Alternativ in-situ:
C:
int len = strlen(a);
for (int i = 0; i < len/2; ++i) {
  char tmp = a[i];
  a[i] = a[len - i - 1];
  a[len - i - 1] = tmp;
}

Grüße,
Matthias
 
Zurück