#include <stdio.h>
int compar( const void * pa, const void * pb)
{
size_t a
= strlen ( * ( char ** ) pa
) ; size_t b
= strlen ( * ( char ** ) pb
) ; if ( a > b) return - 1 ;
if ( a < b) return 1 ;
return 0 ;
}
int main( void )
{
char * a[ ] = { "1. hello world" ,
"2. john doe at the bay watch" ,
"3. Great Heavens" ,
"4. altair" ,
"5. Jim and Jamy" } ;
for ( int i
= 0 ; i
< 5 ; ++ i
) puts ( a
[ i
] ) ;
qsort ( a
, 5 , sizeof a
[ 0 ] , compar
) ;
puts ( "-----------------------------------" ) ;
for ( int i
= 0 ; i
< 5 ; ++ i
) puts ( a
[ i
] ) ;
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgY29tcGFyKGNvbnN0IHZvaWQgKnBhLCBjb25zdCB2b2lkICpwYikKewoJc2l6ZV90IGEgPSBzdHJsZW4oKihjaGFyKiopcGEpOwoJc2l6ZV90IGIgPSBzdHJsZW4oKihjaGFyKiopcGIpOwoJaWYgKGEgPiBiKSByZXR1cm4gLTE7CglpZiAoYSA8IGIpIHJldHVybiAxOwoJcmV0dXJuIDA7Cn0KCmludCBtYWluKHZvaWQpIAp7CgljaGFyKiBhW10gPSB7IjEuIGhlbGxvIHdvcmxkIiwKCSAgICAgICAgICAgICAiMi4gam9obiBkb2UgYXQgdGhlIGJheSB3YXRjaCIsCiAgICAgICAgICAgICAgICAgIjMuIEdyZWF0IEhlYXZlbnMiLAogICAgICAgICAgICAgICAgICI0LiBhbHRhaXIiLAogICAgICAgICAgICAgICAgICI1LiBKaW0gYW5kIEphbXkifTsKICAgICAgICAgICAgICAgICAKICAgIGZvciAoaW50IGk9MDsgaTw1OyArK2kpIHB1dHMoYVtpXSk7CgoJcXNvcnQoYSwgNSwgc2l6ZW9mIGFbMF0sIGNvbXBhcik7CgkKICAgIHB1dHMoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIik7CgogICAgZm9yIChpbnQgaT0wOyBpPDU7ICsraSkgcHV0cyhhW2ldKTsKCglyZXR1cm4gMDsKfQo=