Как отсортировать массив строк по алфавиту (с учетом регистра, нестандартная сортировка)
Мне нужен код языка c для сортировки некоторых строк, и он должен быть чувствительным к регистру иfor the same letter in upper- and lower-cases, the lower-case must come first, Например, результат сортировки для следующих строк:
eggs
bacon
cheese
Milk
spinach
potatoes
milk
spaghetti
должно быть:
bacon
cheese
eggs
milk
Milk
potatoes
spaghetti
spinach
Я написал код, но результат, который я получаю:
Milk
bacon
cheese
eggs
milk
potatoes
spaghetti
spinach
Я понятия не имею, как улучшить это, и я много искал. Может ли кто-нибудь помочь мне с этим?
#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]);
}
}