fork(3) download
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4.  
  5. char* einlesen(int);
  6. int charsort(const void*,const void*);
  7.  
  8. int main (void)
  9. {
  10. enum { LAENGE = 5 };
  11.  
  12. char *z1;
  13. char *z2;
  14.  
  15. printf("In diesem Programm koennen Sie 2 kleingeschriebene Zeichenketten mit jeweils\n"\
  16. "maximal %d Zeichen lexikalisch sortieren lassen.\n",LAENGE-1);
  17.  
  18. z1 = einlesen(LAENGE);
  19.  
  20. if (z1==NULL)
  21. {
  22. puts("\n\nEs konnte kein ausreichender Speicher zur Verfuegung gestellt werden.\n"\
  23. "Das Programm wird beendet.");
  24. return 1;
  25. }
  26.  
  27. z2 = einlesen(LAENGE);
  28.  
  29. if (z2==NULL)
  30. {
  31. puts("\n\nEs konnte kein ausreichender Speicher zur Verfuegung gestellt werden.\n"\
  32. "Das Programm wird beendet.");
  33. free(z1);
  34. return 1;
  35. }
  36.  
  37. puts("\nDie eingegebene Reihenfolge lautet:");
  38. puts(z1);
  39. puts(z2);
  40.  
  41. /* Sortieren der Zeichenketten lexikalisch */
  42. qsort(z1, strlen(z1), 1, charsort);
  43. qsort(z2, strlen(z2), 1, charsort);
  44.  
  45. puts("\nDie sortierte Reihenfolge lautet:");
  46. puts(z1);
  47. puts(z2);
  48.  
  49. if( strcmp(z1,z2)==0 )
  50. {
  51. puts("\nDie beiden Zeichenkette sind gleich.");
  52. }
  53. else
  54. {
  55. puts("\nDie beiden Zeichenkette sind ungleich.");
  56. }
  57.  
  58. free(z1); /* Freigeben des Speicherplatzes */
  59. free(z2); /* Freigeben des Speicherplatzes */
  60.  
  61. return 0;
  62. }
  63.  
  64. char* einlesen(int maxlaenge)
  65. {
  66. char *zeichenkette = malloc(maxlaenge);
  67.  
  68. if( zeichenkette!=NULL )
  69. {
  70. int c, start;
  71. printf("Bitte geben sie eine Zeichenkette mit maximal %d Zeichen ein: ",maxlaenge-1);
  72.  
  73. /* Einlesen einer beliebigen Zeichenkette mit Sonderzeichen ohne <ENTER> */
  74. for(start=0; (start<maxlaenge-1) && (((c=getchar()) != EOF) && c!='\n') ;start++)
  75. {
  76. zeichenkette[start]=c;
  77. }
  78. if( start == maxlaenge-1 )
  79. {
  80. while( ((c=getchar()) != EOF) && c!='\n' );
  81. }
  82.  
  83. /* Hinzufügen eines Nullbytes an die letzte Stelle */
  84. zeichenkette[start] = '\0';
  85. }
  86.  
  87. return zeichenkette;
  88. }
  89.  
  90. int charsort(const void *a,const void *b)
  91. {
  92. const char *x = a, *y = b;
  93. if( *x < *y )
  94. return -1;
  95. else
  96. if( *x > *y )
  97. return 1;
  98. else
  99. return 0;
  100. }
  101.  
Success #stdin #stdout 0s 2144KB
stdin
abcd
dcba
stdout
In diesem Programm koennen Sie 2 kleingeschriebene Zeichenketten mit jeweils
maximal 4 Zeichen lexikalisch sortieren lassen.
Bitte geben sie eine Zeichenkette mit maximal 4 Zeichen ein: Bitte geben sie eine Zeichenkette mit maximal 4 Zeichen ein: 
Die eingegebene Reihenfolge lautet:
abcd
dcba

Die sortierte Reihenfolge lautet:
abcd
abcd

Die beiden Zeichenkette sind gleich.