/*

    Sortiranje stringova

*/

#include <stdio.h>
#include <stdlib.h> // zbog malloc(), calloc(), realloc(), free()
//#include <ctype.h>
#include <string.h> // zbog strcpy()

#define MAX_SIZE 100


// Puni niz stringova
void NapuniNizStringova( char *NizStringova[] ){

    char *imena[5] = {"prvi","drugi","treci","cetvrti","peti"};
    int i;

    for(i=0;i<5;i++){
        // Alociramo prostor za MAX_SIZE char-ova
        if ( (NizStringova[i] = (char *)malloc( sizeof(char) * MAX_SIZE) ) == NULL ){
            fprintf(stderr, "malloc() greska!\n");
            exit(1);
        }

        strcpy( NizStringova[i], imena[i] );
    }
}


// Prikazuje niz stringova
void PrikaziNizStringova( char *NizStringova[] ){

    int i;

    printf ("\n------------------------------------------------------------------\n");

    for(i=0;i<5;i++)
        printf ("\n %s\n", NizStringova[i] );

    printf ("\n------------------------------------------------------------------\n");
}


// Sortira niz stringova leksikografski ( po alfabetskom redosledu ).
// Argument n je broj stringova koje sortira
void SortirajNizStringova( char *NizStringova[], int n ){

    int i,j;
    char* tmp;

    for(i=0; i<n-1;i++)
        for(j=i+1;j<n;j++)
            if( strcmpi( NizStringova[i], NizStringova[j]) > 0 ) {
                tmp = NizStringova[i];
                NizStringova[i] = NizStringova[j];
                NizStringova[j] = tmp;
            }
}



int main(void) {

    int n = 5;              // broj stringova u NizStringova
    char *NizStringova[5];  // deklarisemo pointere na 5 stringova


    NapuniNizStringova( NizStringova );

    PrikaziNizStringova( NizStringova );


    SortirajNizStringova( NizStringova, n );

    PrikaziNizStringova( NizStringova );


    return 0;
}