Написать сортировку по алфавиту массива структур - C (СИ)
Формулировка задачи:
Доброй ночи. Не получается написать сортировку по алфавиту массива структур, заданного вот так:
Отсортировать нужно по начальной большой букве массива name.
Заранее большое спасибо.
struct book
{
char name[15];
char surname[15];
char tel[15];
int age;
} mybook[10];Решение задачи: «Написать сортировку по алфавиту массива структур»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
const char * text;
int num;
} pair_t;
int cmp(const void * a, const void * b){
return strcmp(((pair_t*)a)->text, ((pair_t*)b)->text);
}
void dump(pair_t * p, size_t size){
while ( size-- ){
printf("%d\t%s\n", p->num, p->text);
++p;
}
}
int main(void){
pair_t pairs[] = {
{ .text = "bla bla bla", .num = 1 },
{ .text = "very long string", .num = 2 },
{ .text = "abc", .num = 3 }
};
dump(pairs, sizeof(pairs) / sizeof(*pairs));
qsort(pairs, sizeof(pairs) / sizeof(*pairs), sizeof(*pairs), cmp);
printf("\n");
dump(pairs, sizeof(pairs) / sizeof(*pairs));
return 0;
}