#include<stdio.h>
#include <string.h>
//for using tolower
#include <ctype.h>
int main( ) {
int i, k, j, n= 0 ;
char abc[ 25 ] ;
const char * stop = "stop" ;
char * p; //using for lowercase
//using 2d array for max of 10,000 words, max size of words 25
char str[ 10000 ] [ 25 ] , temp[ 25 ] ;
printf ( "Enter up to 10000 words, type stop to enter the current words:\n " ) ;
while ( scanf ( "%24s" , abc) > 0 && strncmp ( abc, "stop" , 5 ) ! = 0 ) {
strncpy ( str[ n++ ] , abc, 25 ) ;
}
//printf("YES\n");
//return (1);
for ( i = 0 ; i < n; ++ i)
for ( k = i + 1 ; k < n; ++ k) {
//comparing two strings using strcmp() function is used
//using strcpy() to copy string to a temp
if ( strcmp ( str[ i] , str[ k] ) > 0 ) {
strcpy ( temp, str[ i] ) ;
strcpy ( str[ i] , str[ k] ) ;
strcpy ( str[ k] , temp) ;
}
}
//using pointer to converting to lowercase
//src: https://w...content-available-to-author-only...b.com/programming/software-development/threads/57296/how-does-one-tolower-an-entire-string
for ( i = 0 ; i< n; i++ )
for ( p = str[ i] ; * p ! = '\0 ' ; p++ )
* p = ( char ) tolower ( * p) ;
//printing words in lexi order
printf ( "\n Words in lexicographical order: \n " ) ;
for ( i = 0 ; i < n; ++ i) {
puts ( str[ i] ) ;
}
printf ( "WARNING: Words longer than 25 in length were ignored. \n " ) ;
return 0 ;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGUgPHN0cmluZy5oPgoKLy9mb3IgdXNpbmcgdG9sb3dlcgojaW5jbHVkZSA8Y3R5cGUuaD4KaW50IG1haW4oKSB7CiAgICBpbnQgaSwgaywgaiwgbj0wOwogICAgY2hhciBhYmNbMjVdOwogICAgY29uc3QgY2hhciAqc3RvcCA9ICJzdG9wIjsKICAgIGNoYXIgKnA7IC8vdXNpbmcgZm9yIGxvd2VyY2FzZQogICAgLy91c2luZyAyZCBhcnJheSBmb3IgbWF4IG9mIDEwLDAwMCB3b3JkcywgbWF4IHNpemUgb2Ygd29yZHMgMjUKICAgIGNoYXIgc3RyWzEwMDAwXVsyNV0sIHRlbXBbMjVdOwoKICAgIHByaW50ZigiRW50ZXIgdXAgdG8gMTAwMDAgd29yZHMsIHR5cGUgc3RvcCB0byBlbnRlciB0aGUgY3VycmVudCB3b3JkczpcbiIpOwogICAgd2hpbGUgKHNjYW5mKCIlMjRzIiwgYWJjKT4wICYmIHN0cm5jbXAoYWJjLCAic3RvcCIsIDUpICE9IDApIHsKICAgICAgICBzdHJuY3B5IChzdHJbbisrXSwgYWJjLCAyNSk7IAogICAgfQogICAgLy9wcmludGYoIllFU1xuIik7CiAgICAvL3JldHVybiAoMSk7CgogICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpCiAgICAgICAgICAgIGZvciAoayA9IGkgKyAxOyBrIDwgbjsgKytrKSB7CiAgICAgICAgICAgICAgICAvL2NvbXBhcmluZyB0d28gc3RyaW5ncyB1c2luZyBzdHJjbXAoKSBmdW5jdGlvbiBpcyB1c2VkCiAgICAgICAgICAgICAgICAvL3VzaW5nIHN0cmNweSgpIHRvIGNvcHkgc3RyaW5nIHRvIGEgdGVtcAogICAgICAgICAgICAgICAgaWYgKHN0cmNtcChzdHJbaV0sIHN0cltrXSkgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgc3RyY3B5KHRlbXAsIHN0cltpXSk7CiAgICAgICAgICAgICAgICAgICAgc3RyY3B5KHN0cltpXSwgc3RyW2tdKTsKICAgICAgICAgICAgICAgICAgICBzdHJjcHkoc3RyW2tdLCB0ZW1wKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAvL3VzaW5nIHBvaW50ZXIgdG8gY29udmVydGluZyB0byBsb3dlcmNhc2UKICAgICAgICAvL3NyYzogaHR0cHM6Ly93Li4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5iLmNvbS9wcm9ncmFtbWluZy9zb2Z0d2FyZS1kZXZlbG9wbWVudC90aHJlYWRzLzU3Mjk2L2hvdy1kb2VzLW9uZS10b2xvd2VyLWFuLWVudGlyZS1zdHJpbmcKICAgICAgICBmb3IgKGkgPTA7IGk8bjsgaSsrKSAKICAgICAgICAgICAgZm9yIChwID0gc3RyW2ldOyAqcCAhPSAnXDAnOyBwKyspCiAgICAgICAgICAgICAgICAqcCA9IChjaGFyKSB0b2xvd2VyKCpwKTsKCiAgICAgICAgLy9wcmludGluZyB3b3JkcyBpbiBsZXhpIG9yZGVyCiAgICAgICAgcHJpbnRmKCJcbldvcmRzIGluIGxleGljb2dyYXBoaWNhbCBvcmRlcjogXG4iKTsKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7CiAgICAgICAgICAgIHB1dHMoc3RyW2ldKTsKICAgICAgICB9CiAgICAgICAgcHJpbnRmKCJXQVJOSU5HOiBXb3JkcyBsb25nZXIgdGhhbiAyNSBpbiBsZW5ndGggd2VyZSBpZ25vcmVkLiBcbiIpOwoKICAgICAgICByZXR1cm4gMDsKCn0=