/*
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;
}