Mit zwei Pointern ein Wort verkehrt herum drehen



  • Hi,

    ich suche nach einer eleganten Lösung ein verkehrt herum geschriebenes Wort in die richtige Reihenfolge zu bringen. Mir fehlt gerade ein Lösungsansatz.

    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    
    int main(int argc, char *argv[]) {
      char eingabe[200];
      char *p;
      char *e;
      while(fgets(eingabe,200,stdin) != NULL) {
        p = eingabe;
        while(*p != '\n' && *p != ' ') {
          e = p;
          while(*e != ' ' && *e != '\n') {
    	e++;
          }
          e--;
          if(islower(*p) && isupper(*e)) {
    	/* Hier sollte jetzt das Wort rumgedreht werden */
            /* z.B: aus tsruD -> Durst */
          }
          e++;
          p = e;
          p++;
        }
    
        printf("\n");
      }
      return EXIT_SUCCESS;
    }
    

    Hat jemand eine Idee?

    Danke schonmal



  • W0lf schrieb:

    ich suche nach einer eleganten Lösung ein verkehrt herum geschriebenes Wort in die richtige Reihenfolge zu bringen.

    Wie sieht denn deine nicht-elegante Lösung aus?

    Das klingt sehr nach Hausaufgabe.



  • void reverse_range(char *begin, char * end) {
      --end;
      while(begin < end) {
        char const t = *begin;
        *begin = *end;
        *end = t;
        ++begin;
        --end;
      }
    }
    

Anmelden zum Antworten