The answer to your question is that you made your insertion_sort method header wrong. Yes your strcmp would work fine if you were running it on the 'array' variable, but you are running it on the 'a' parameter which is of a different type. Below is your code modified to the point that it will compile (whether or not the method works, that was not your original question...):
CODE
#include <stdio.h>
#include <string.h>
//************CHANGED**************************
void insertion_sort(const char **a, int size);
//*********************************************
#define SIZE 4
main()
{
const char *array[SIZE] = { "This", "Is", "Silicon", "Valley" };
printf("%s%s%s%s", array[0], array[1], array[2], array[3]);
//**********CHANGED************************
insertion_sort(array, SIZE);
//*****************************************
printf("%s%s%s%s", array[0], array[1], array[2], array[3]);
return 0;
}
//***************CHANGED***********************
void insertion_sort( const char **a, int size)
//***********************************************
{
int COUNT, IND;
for(COUNT = 1; COUNT <= size-1; COUNT++){
IND = COUNT;
if((IND >= 1) &&((strcmp (a[IND-1], a[IND])) > 0))
{
printf("%s", a[IND-1]);
IND--;
}
}
}
QUOTE(sjshark11 @ 16 Jul, 2007 - 12:59 PM)

#include <stdio.h>
#include <string.h>
void insertion_sort(const char *a, int size);
#define SIZE 4
main()
{
const char *array[SIZE] = { "This", "Is", "Silicon", "Valley" };
printf("%s%s%s%s", array[0], array[1], array[2], array[3]);
insertion_sort(*array, SIZE);
printf("%s%s%s%s", array[0], array[1], array[2], array[3]);
return 0;
}
void insertion_sort( const char *a, int size)
{
int COUNT, IND;
for(COUNT = 1; COUNT <= size-1; COUNT++){
IND = COUNT;
if((IND >= 1) &&((strcmp (a[IND-1], a[IND])) > 0))
{
printf("%s", a[IND-1]);
IND--;
}
}
}
"I got that error C2664: 'strcmp' : cannot convert parameter 1 from 'const char' to 'const char *'" also. Can anyone tell me why I got this message?? The error line is underlined!