# Strings umdrehn(spiegeln)



## Googlehupf (12. September 2011)

Hiho,

ich hab mir gedacht mal Strings zu spiegeln ...

So wollte ichs machen:


```
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 .

Habt ihr bitte ein paar Tipps für mich?

MfG Googlehupf


----------



## Steiner_B (12. September 2011)

Hallo,

Ich würds irgendwie so versuchen:

```
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.


----------



## Crash Kid (13. September 2011)

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


----------



## Matthias Reitinger (13. September 2011)

Crash Kid hat gesagt.:


> 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. 



Crash Kid hat gesagt.:


> 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:

```
int len = strlen(a);
for (int i = 0; i < len; ++i) {
  b[i] = a[len - i - 1];
}
b[len] = '\0';
```

Alternativ in-situ:

```
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


----------

