Cómo ordenar una matriz de cadenas alfabéticamente (distingue entre mayúsculas y minúsculas, intercalación no estándar)

Necesito un código de lenguaje C para ordenar algunas cadenas y debe ser sensible a mayúsculas y minúsculas.para la misma letra en mayúsculas y minúsculas, la minúscula debe aparecer primero. Por ejemplo, el resultado de la clasificación para las siguientes cadenas:

eggs
bacon
cheese
Milk
spinach
potatoes
milk
spaghetti

debiera ser:

bacon
cheese
eggs
milk
Milk
potatoes
spaghetti
spinach

He escrito un código pero el resultado que obtengo es:

Milk
bacon
cheese
eggs
milk
potatoes
spaghetti
spinach

No tengo idea de cómo mejorar esto y he buscado mucho. ¿Podría alguien ayudarme con esto?

#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]);
    }
}

Respuestas a la pregunta(6)

Su respuesta a la pregunta