for(i=0;i<6;i++)/*allocating memory*/
c[i] = (char*) calloc(n[i],sizeof(char));
You need to account for the nul terminator after each string too, this should be
c[i] = (char*) calloc(n[i] + 1,sizeof(char));
Keep in mind that when you read the strings back, you need to ensure they are nul terminated too. It's not needed now, since calloc() will ensure the last byte in your string is the value 0, but generally something to be aware of.
/*using built-in quick sort*/
qsort(*c,6,sizeof(char*),compare);/*why won't this work?*/
Dereferencing c and passing it to qsort will just be wrong, it should be just
qsort(c,6,sizeof(char*),compare);
Same thing with the printf , *c[i] is not a char * as the printf %s formatter will expect. It should be
printf("%s\n",c[i]);