Отсортировать массив символов (произвольный) по алфавиту - C (СИ)
Формулировка задачи:
Отсортировать массив символов (произвольный) по алфавиту. Создать функцию, которая выполняет эти действия для произвольного массива.
Решение задачи: «Отсортировать массив символов (произвольный) по алфавиту»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int cmp(const void * a, const void * b) {
return *(char*)a - *(char*)b;
}
typedef char string_t[256];
#define get_string(s) ( scanf("%255[^\n]%*c", (s)) == 1 )
int main(void) {
string_t str;
while ( printf("String: ") && get_string(str) ) {
qsort(str, strlen(str), 1, cmp);
printf("Sorted: %s\n", str);
}
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек:
- для работы с консолью, - для работы с функцией сортировки, - для работы со строками. - Создание функции сравнения cmp, которая будет сравнивать два символа. В данном случае используется оператор вычитания для определения порядка символов.
- Создание структуры типа string_t для представления строки символов.
- Определение функции get_string, которая считывает строку символов с помощью функции scanf.
- В основной функции программы main создается строка str типа string_t.
- В цикле while происходит считывание строки символов с помощью функции get_string и ее сортировка с помощью функции qsort. В качестве аргументов функции qsort передаются: начальный адрес строки, длина строки, шаг (в данном случае 1), функция сравнения cmp.
- После сортировки выводится отсортированная строка.
- Цикл продолжается до тех пор, пока пользователь не введет пустую строку.
- Программа завершается с возвратом 0.