Sortieren von Buchstaben

killa85

Grünschnabel
hallo
ich möchte ein Programm entwickeln,das die Buchstaben der Wörter in einem Satz sortiert.
wie z.b.:

Wer Zurechtweisung beachtet, wird geehrt.

Nun will ich die Buchstaben (Zeichen) jedes einzelnen Wortes sortieren. Die Zeichen solllen nach ASCII aufsteigend sortiert werden.

Mit dem vorherigen Beispiel ergibt sich also:
Wer Zceeghinrstuuw ,abceehtt dirw .eeghrt

bin ein ziemlicher neuling auf dem gebiet wäre nett wenn mir jemand helfen könnte
mfg killa
 
Nun, ich würde den Satz in ein Array packen:
Code:
char cSatz[] = "Wer Zurechtweisung beachtet, wird geehrt.";
Dann suchst Du Dir die einzelnen Wörter raus und sortierst die Subarrays mit qsort:
Code:
char * pWord = strtok(cSatz, " ");
while(pWord != NULL) 
{
  qsort(pWord, strlen(pWord), 1, CompareCharacters);
  printf("%s ", pWord);
  pWord = strtok(NULL, " ");
}
Vorher mußt Du natürlich noch die Vergleichsfunktion definieren:
Code:
int CompareCharacters(const void* pC1, const void *pC2)
{
  char cLeft = *((char*)pC1);
  char cRight = *((char*)pC2);
  if(cLeft < cRight) return -1;
  else if(cLeft == cRight) return 0;
  else return 1;
}

So in etwa könnte es gehen, habe es allerdings nicht ausprobiert.
 
so hab jetzt von nem kumpel das programm hier bekommen.das funktioniert in etwa so wie es mir vorstelle.kann mir nur einer helfen was was hier macht?
danke im voraus
mfg killa
hier das programm:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>

int funcsortier(const void *A, const void *B)
{
char *a = (char *)A;
char *b = (char *)B;

if (*a < *b) return -1; /* kleiner */
if (*a > *b) return +1; /* grösser */
return 0; /* gleich */
}

int main()
{
char satz[80], *s, *e;

fgets(satz, sizeof(satz), stdin); /* Satz einlesen */
for (s = satz; *s; s = e)
{ while(*s == ' ' || *s == '\t') /* Whitespaces überspringen */
s++;
if (*s == 0 || *s == '\n') /* Satzende erreicht ? */
break;
for (e = s; *e && *e != ' ' && *e != '\t' && *e != '\n'; ) /* Wort */
e++;
printf("(%.*s)", e-s, s);
qsort(s, e-s, sizeof(char), funcsortier); /* Buchstaben sortieren */
}
printf("\nErgebnis: %s", satz);
getch();
return 0;
}
 
Zurück