Name verkehrt herum ausgeben
-
Uelidetumm schrieb:
Ps: Werde nun noch versuchen, das mit den Leerzeichen in den Griff zu bekommen evtl. melde ich mich nochmals kurz.
Wenn du die Schleife so beibehalten willst, kannst du einfach bei name[i]==0 abbrechen.
-
mach doch z.b. so:
#include <stdio.h> #include <string.h> void rev (char *in, char *out) { char *p = in + strlen(in); // ende finden while (p >= in) // solange wir nicht wieder am anfang sind *out++ = *--p; // rueckwaerts kopieren, pointer weiterzaehlen } // test int main(void) { char *in = "thomas"; char out[256]; rev (in, out); // drehen puts (in); // original puts (out); // gedreht }
-
So danke _matze, du bist der Sieger^^
danke auch an fricky, aber wollte mein Programm so beibehalten.
der code sieht nun so aus:#include <stdio.h> char name[20]; int i; int verkehren() { for (i=8; i >= 0; i--) { if (name[i]!=0) { printf("%c", name[i]); } } } int main() { printf("Bitte geben Sie einen Namen ein (MAX. 20 Stellen)"); scanf("%s", &name); verkehren(); return 0; }
Lg Ueli
-
Uelidetumm schrieb:
danke auch an fricky, aber wollte mein Programm so beibehalten.
besser ist das. mein vorschlag ist nämlich ein wenig buggy.
-
for (i=8; i >= 0; i--)
Und wenn der Name 9 oder mehr Zeichen lang ist?
-
Unter anderem ist das:
Uelidetumm schrieb:
... for (i=8; i >= 0; i--) ...
Lg Ueli
kagga!
LG,
kagga detect0r
-
hier kommts nich so auffe länge an
void revers0r(char* t) { char* s = t; while(*t) t++; while (--t >= s) putchar(*t); } int main() { revers0r ("stoffregen"); return 0; }
-
knivil schrieb:
for (i=8; i >= 0; i--)
Und wenn der Name 9 oder mehr Zeichen lang ist?
Kann doch gar nicht passieren! Schließlich hat er den Benutzer höflichst gebeten, nicht mehr Zeichen einzugeben!
-
printf("Bitte geben Sie einen Namen ein (MAX. 20 Stellen)");
-
knivil schrieb:
printf("Bitte geben Sie einen Namen ein (MAX. 20 Stellen)");
Hm, der erste Code sah noch anders aus... War ja sowieso nur ein Witz. Er soll sich schließlich nicht auf das Wohlwollen des Benutzers verlassen.