Inhalt von char s umgekehrt in char z speichern
-
Hallo zusammen!
Ich müßte den Inhalt von
char s[24] = Suppenkessel;
umgekehrt in
char z[24];
speichern und char z ausgeben.
---------------------------------
Ergebnis: char z: lessekneppuS
Welche Möglichkeiten gibt es?
Danke
Chris
-
-
Danke.
Wie soll ich den Code:
#include <algorithm>
iterator reverse_copy( iterator start, iterator end, iterator result );hier einfügen:
#include <iostream>
int main()
{
int index = 3;char s[24] = "Bubbelmaul";
char z[24];strcpy(z, s);
charps = s;
charpz = z;std::cout <<"Char *ps: " << ps <<"\n";
std::cout <<"Char *pz: " << pz;return 0;
}
Grüße
Chris
-
evtl. so
#include <iostream> #include <algorithm> int main() { char s[24] = "Bubbelmaul"; char z[24]; reverse_copy( s, s+strlen(s), z ); std::cout <<"Char *ps: " << s <<"\n"; std::cout <<"Char *pz: " << z; return 0; }
-
Folgende Fehlermeldung:
E2268 Aufruf der undefinierten Funktion 'reverse_copy' in Funktion main() in Zeile 8
Grüße
Chris
-
std::reverse_copy(...
-
Vielen Dank an
Braunstein und Artchi.
Jetzt noch 2 letzte Fragen (Sorry):
- Warum wird das "@" mit ausgegeben?
Out:
Char *ps: BubbelmaulChar *pz: luamlebbuB@
- Könnte ich bitte eine kurze Erklärung bekommen?
Ich verstehe den Ausdruck: -->s+strlen(s)<-- nicht.
OK: s ist char s - aber +strlen(s)?
Danke
Chris
-
chrbusch schrieb:
Vielen Dank an
Braunstein und Artchi.
Jetzt noch 2 letzte Fragen (Sorry):
- Warum wird das "@" mit ausgegeben?
Out:
Char *ps: BubbelmaulChar *pz: luamlebbuB@
- Könnte ich bitte eine kurze Erklärung bekommen?
Ich verstehe den Ausdruck: -->s+strlen(s)<-- nicht.
OK: s ist char s - aber +strlen(s)?
Danke
Chris
- Weil das was da oben steht falsch ist.
- Mach es lieber so wie ihr es gelernt habt und ohne STL. Ich bin mir sicher das ist nicht die geforderte Variante. Du brauchst eine Funktion void reversen(const char* in, char* out, unsigned max);
-
chrbusch schrieb:
- Warum wird das "@" mit ausgegeben?
Weil die Nullterminierung des Strings fehlt. Folgendermaßen kann man sie hinzufügen:
pz[strlen(ps)] = '\0';Prinzipiell müsste es auch reichen, einfach ein Zeichen mehr zu kopieren, das klappt bei mir aber komischerweise nicht.
- Könnte ich bitte eine kurze Erklärung bekommen?
Ich verstehe den Ausdruck: -->s+strlen(s)<-- nicht.
OK: s ist char s - aber +strlen(s)?
Das ist ein Zeiger hinter das letzte Zeichen des Strings. 'reverse_copy' benötigt einen Bereich zum Kopieren, also einen Start-Zeiger und einen End-Zeiger. Es kopiert dann den Bereich vom Start bis vor das Ende.
-
Konrad Rudolph schrieb:
Prinzipiell müsste es auch reichen, einfach ein Zeichen mehr zu kopieren, das klappt bei mir aber komischerweise nicht.
Würde dann nicht das Nullbyte an erster Stelle stehen?;)
-
LordJaxom schrieb:
Konrad Rudolph schrieb:
Prinzipiell müsste es auch reichen, einfach ein Zeichen mehr zu kopieren, das klappt bei mir aber komischerweise nicht.
Würde dann nicht das Nullbyte an erster Stelle stehen?;)
Ja, dieser Gedanke erklärt so einiges.

-
oder so:
void rev_string (char *in, char *out) { char *p = out + strlen(in); *p = 0; while (p-out) *--p = *in++; }
:xmas2:
-
LordJaxom schrieb:
Konrad Rudolph schrieb:
Prinzipiell müsste es auch reichen, einfach ein Zeichen mehr zu kopieren, das klappt bei mir aber komischerweise nicht.
Würde dann nicht das Nullbyte an erster Stelle stehen?;)
Hähä, habe mich auch gewundert. *klatsch an den kopf* Ja ja, die C-Style Strings sind der Hammer.

-
nt