#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char * einlesen( int ) ;
int charsort( const void *, const void * ) ;
int main ( void )
{
enum { LAENGE = 5 } ;
char * z1;
char * z2;
printf ( "In diesem Programm koennen Sie 2 kleingeschriebene Zeichenketten mit jeweils\n " \
"maximal %d Zeichen lexikalisch sortieren lassen.\n " , LAENGE- 1 ) ;
z1 = einlesen( LAENGE) ;
if ( z1== NULL)
{
puts ( "\n \n Es konnte kein ausreichender Speicher zur Verfuegung gestellt werden.\n " \
"Das Programm wird beendet." ) ;
return 1 ;
}
z2 = einlesen( LAENGE) ;
if ( z2== NULL)
{
puts ( "\n \n Es konnte kein ausreichender Speicher zur Verfuegung gestellt werden.\n " \
"Das Programm wird beendet." ) ;
return 1 ;
}
puts ( "\n Die eingegebene Reihenfolge lautet:" ) ;
/* Sortieren der Zeichenketten lexikalisch */
puts ( "\n Die sortierte Reihenfolge lautet:" ) ;
{
puts ( "\n Die beiden Zeichenkette sind gleich." ) ; }
else
{
puts ( "\n Die beiden Zeichenkette sind ungleich." ) ; }
free ( z1
) ; /* Freigeben des Speicherplatzes */ free ( z2
) ; /* Freigeben des Speicherplatzes */
return 0 ;
}
char * einlesen( int maxlaenge)
{
char * zeichenkette
= malloc ( maxlaenge
) ;
if ( zeichenkette!= NULL )
{
int c, start;
printf ( "Bitte geben sie eine Zeichenkette mit maximal %d Zeichen ein: " , maxlaenge
- 1 ) ;
/* Einlesen einer beliebigen Zeichenkette mit Sonderzeichen ohne <ENTER> */
for ( start
= 0 ; ( start
< maxlaenge
- 1 ) && ( ( ( c
= getchar ( ) ) != EOF
) && c
!= '\n ' ) ; start
++ ) {
zeichenkette[ start] = c;
}
if ( start == maxlaenge- 1 )
{
while ( ( ( c
= getchar ( ) ) != EOF
) && c
!= '\n ' ) ; }
/* Hinzufügen eines Nullbytes an die letzte Stelle */
zeichenkette[ start] = '\0 ' ;
}
return zeichenkette;
}
int charsort( const void * a, const void * b)
{
const char * x = a, * y = b;
if ( * x < * y )
return - 1 ;
else
if ( * x > * y )
return 1 ;
else
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgoKY2hhciogZWlubGVzZW4oaW50KTsKaW50IGNoYXJzb3J0KGNvbnN0IHZvaWQqLGNvbnN0IHZvaWQqKTsKCmludCBtYWluICh2b2lkKQp7CiAgICBlbnVtIHsgTEFFTkdFID0gNSB9OwoJCiAgICBjaGFyICp6MTsKICAgIGNoYXIgKnoyOwoKICAgIHByaW50ZigiSW4gZGllc2VtIFByb2dyYW1tIGtvZW5uZW4gU2llIDIga2xlaW5nZXNjaHJpZWJlbmUgWmVpY2hlbmtldHRlbiBtaXQgamV3ZWlsc1xuIlwKICAgICAgICAgICAibWF4aW1hbCAlZCBaZWljaGVuIGxleGlrYWxpc2NoIHNvcnRpZXJlbiBsYXNzZW4uXG4iLExBRU5HRS0xKTsJCQoJCQogICAgejEgPSBlaW5sZXNlbihMQUVOR0UpOwoJCQogICAgaWYgKHoxPT1OVUxMKQogICAgewogICAgICAgIHB1dHMoIlxuXG5FcyBrb25udGUga2VpbiBhdXNyZWljaGVuZGVyIFNwZWljaGVyIHp1ciBWZXJmdWVndW5nIGdlc3RlbGx0IHdlcmRlbi5cbiJcCiAgICAgICAgICAgICAiRGFzIFByb2dyYW1tIHdpcmQgYmVlbmRldC4iKTsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCQogICAgejIgPSBlaW5sZXNlbihMQUVOR0UpOwoJCQogICAgaWYgKHoyPT1OVUxMKQogICAgewogICAgICAgIHB1dHMoIlxuXG5FcyBrb25udGUga2VpbiBhdXNyZWljaGVuZGVyIFNwZWljaGVyIHp1ciBWZXJmdWVndW5nIGdlc3RlbGx0IHdlcmRlbi5cbiJcCiAgICAgICAgICAgICAiRGFzIFByb2dyYW1tIHdpcmQgYmVlbmRldC4iKTsKICAgICAgICBmcmVlKHoxKTsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCQkKICAgIHB1dHMoIlxuRGllIGVpbmdlZ2ViZW5lIFJlaWhlbmZvbGdlIGxhdXRldDoiKTsKICAgIHB1dHMoejEpOwogICAgcHV0cyh6Mik7CgogICAgLyogU29ydGllcmVuIGRlciBaZWljaGVua2V0dGVuIGxleGlrYWxpc2NoICovCiAgICBxc29ydCh6MSwgc3RybGVuKHoxKSwgMSwgY2hhcnNvcnQpOwogICAgcXNvcnQoejIsIHN0cmxlbih6MiksIDEsIGNoYXJzb3J0KTsKICAgICAgICAKICAgIHB1dHMoIlxuRGllIHNvcnRpZXJ0ZSBSZWloZW5mb2xnZSBsYXV0ZXQ6Iik7CiAgICBwdXRzKHoxKTsKICAgIHB1dHMoejIpOwogICAgICAgIAogICAgaWYoIHN0cmNtcCh6MSx6Mik9PTAgKQogICAgewogICAgCXB1dHMoIlxuRGllIGJlaWRlbiBaZWljaGVua2V0dGUgc2luZCBnbGVpY2guIik7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAJcHV0cygiXG5EaWUgYmVpZGVuIFplaWNoZW5rZXR0ZSBzaW5kIHVuZ2xlaWNoLiIpOwogICAgfQogICAgICAgIAogICAgZnJlZSh6MSk7ICAvKiBGcmVpZ2ViZW4gZGVzIFNwZWljaGVycGxhdHplcyAqLwogICAgZnJlZSh6Mik7ICAvKiBGcmVpZ2ViZW4gZGVzIFNwZWljaGVycGxhdHplcyAqLwoKICAgIHJldHVybiAwOyAKfQoKY2hhciogZWlubGVzZW4oaW50IG1heGxhZW5nZSkgCnsKICAgIGNoYXIgKnplaWNoZW5rZXR0ZSA9IG1hbGxvYyhtYXhsYWVuZ2UpOwogICAgCiAgICBpZiggemVpY2hlbmtldHRlIT1OVUxMICkKICAgIHsKICAgIAlpbnQgYywgc3RhcnQ7CiAgICAJcHJpbnRmKCJCaXR0ZSBnZWJlbiBzaWUgZWluZSBaZWljaGVua2V0dGUgbWl0IG1heGltYWwgJWQgWmVpY2hlbiBlaW46ICIsbWF4bGFlbmdlLTEpOwogICAgCiAgICAJLyogRWlubGVzZW4gZWluZXIgYmVsaWViaWdlbiBaZWljaGVua2V0dGUgbWl0IFNvbmRlcnplaWNoZW4gb2huZSA8RU5URVI+ICovCiAgICAJZm9yKHN0YXJ0PTA7IChzdGFydDxtYXhsYWVuZ2UtMSkgJiYgKCgoYz1nZXRjaGFyKCkpICE9IEVPRikgJiYgYyE9J1xuJykgO3N0YXJ0KyspCiAgICAJewogICAgICAgIAl6ZWljaGVua2V0dGVbc3RhcnRdPWM7CiAgICAJfQogICAgCWlmKCBzdGFydCA9PSBtYXhsYWVuZ2UtMSApCiAgICAJewogICAgCSAgICB3aGlsZSggKChjPWdldGNoYXIoKSkgIT0gRU9GKSAmJiBjIT0nXG4nICk7CiAgICAJfQogICAgCiAgICAJLyogSGluenVmw7xnZW4gZWluZXMgTnVsbGJ5dGVzIGFuIGRpZSBsZXR6dGUgU3RlbGxlICovCiAgICAJemVpY2hlbmtldHRlW3N0YXJ0XSA9ICdcMCc7CiAgICB9CgogICAgcmV0dXJuIHplaWNoZW5rZXR0ZTsKfQoKaW50IGNoYXJzb3J0KGNvbnN0IHZvaWQgKmEsY29uc3Qgdm9pZCAqYikKewogICAgY29uc3QgY2hhciAqeCA9IGEsICp5ID0gYjsKICAgIGlmKCAqeCA8ICp5ICkKICAgICAgICByZXR1cm4gLTE7CiAgICBlbHNlCiAgICBpZiggKnggPiAqeSApCiAgICAgICAgcmV0dXJuIDE7CiAgICBlbHNlCiAgICAgICAgcmV0dXJuIDA7Cn0K