Ввести набор слов и отсортировать их в алфавитном порядке - C (СИ)
Формулировка задачи:
Надо ввести набор слов и отсортировать их в алфавитном порядке.
Помогите, пожалуйста!!!
Решение задачи: «Ввести набор слов и отсортировать их в алфавитном порядке»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <string.h> int asccmp(const void * a, const void * b){ return strcmp(*(char**)a, *(char**)b); } int main(void){ char buf[BUFSIZ], * p, ** words; int cnt, i; words = NULL; cnt = 0; while ( printf("String: ") && scanf("%[^\n]%*c", buf) == 1 ){ for ( p = strtok(buf, " "); p; p = strtok(NULL, " ") ){ if ( ( words = (char**)realloc(words, sizeof(char*) * (cnt + 1)) ) == NULL ){ perror("realloc"); exit(1); } if ( ( words[cnt++] = strdup(p) ) == NULL ){ perror("strdup"); exit(1); } } if ( ! words ){ fprintf(stderr, "Empty string!\n"); continue; } qsort(words, cnt, sizeof(char*), asccmp); printf("Result: "); for ( i = 0; i < cnt; ++i ) printf("%s ", words[i]); printf("\n"); for ( i = 0; i < cnt; ++i ) free(words[i]); free(words); words = NULL; cnt = 0; } exit(0); }
Объяснение кода листинга программы
- Ввод набора слов осуществляется с помощью функции
scanf
, которая считывает строку (до первого символа новой строки) и разделяет её на слова (по пробелам). Каждое слово сохраняется в массивеwords
. - Каждое слово в массиве
words
выделяется динамически с помощью функцииstrdup
, которая выделяет память под копию строки. - Если слова не введены, выводится сообщение об ошибке и программа продолжает выполнение.
- Если после ввода всех слов в массиве
words
не осталось памяти, выводится сообщение об ошибке и программа завершается. - Для сортировки массива
words
используется функцияqsort
, которая сортирует элементы массива по алфавиту с помощью функции сравненияasccmp
. - Результат сортировки выводится на экран с помощью цикла
for
. - После вывода результата все слова в массиве
words
освобождаются с помощью функцииfree
, а сам массивwords
освобождается. - После окончания работы программы переменные
words
,cnt
иi
сбрасываются в начальное состояние, а программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д