Name verkehrt herum ausgeben



  • Ok zuerst mal Danke für alle Antworten.
    Sorry, dass ich falsch gepostet habe.

    _matze hatte recht (und hat es sogar so formuliert, dass ich es verstanden habe^^)
    ich musste nur noch das &name[i] in name[i] ändern und %c in %s ändern.

    Gruess Ueli

    Ps: Werde nun noch versuchen, das mit den Leerzeichen in den Griff zu bekommen evtl. melde ich mich nochmals kurz.



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


Anmelden zum Antworten