Como ordenar um array de string alfabeticamente (agrupamento não sensível a maiúsculas e minúsculas)

Eu preciso de um código de linguagem c para classificar algumas seqüências de caracteres e deve ser sensível a maiúsculas e minúsculaspara a mesma letra em maiúsculas e minúsculas, a minúscula deve vir primeiro. Por exemplo, o resultado da classificação para as seguintes sequências:

eggs
bacon
cheese
Milk
spinach
potatoes
milk
spaghetti

deveria estar:

bacon
cheese
eggs
milk
Milk
potatoes
spaghetti
spinach

Eu escrevi um código, mas o resultado que estou recebendo é:

Milk
bacon
cheese
eggs
milk
potatoes
spaghetti
spinach

Não tenho ideia de como melhorar isso e tenho pesquisado muito. Alguém poderia me ajudar com isso?

#include <stdio.h>
#include <string.h>

int main(){
    char c;
    char name[20][10], temp[10];
    int count_name = 0;
    int name_index = 0;
    int i, j;

    while ((c = getchar()) != EOF){
        if (c == 10){
            name[count_name][name_index] = '\0';
            count_name++;
            name_index = 0;
        } else {
            name[count_name][name_index] = c;
            name_index++;
        }
    }

    for(i=0; i < count_name-1 ; i++){
        for(j=i+1; j< count_name; j++)
        {
            if(strcmp(name[i],name[j]) > 0)
            {
                strcpy(temp,name[i]);
                strcpy(name[i],name[j]);
                strcpy(name[j],temp);
            }
        }
    }

    for (i = 0; i < count_name; i++){
        printf("%s\n", name[i]);
    }
}

questionAnswers(6)

yourAnswerToTheQuestion