С клавиатуры вводится слово - C (СИ)
Формулировка задачи:
Здраствуйте.
С клавиатуры вводится слово. Написать программу распечатывающую все буквы этого слова в алфавитном порядке. Максимальная длинна строк - не менее 80 символов.
Помогите пожалуйста.
Решение задачи: «С клавиатуры вводится слово»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int compare(const void * x1, const void * x2)
{
return ( *(char*)x1 - *(char*)x2 );
}
void print_skip_spaces(char *str)
{
for (char *ptr=str; *ptr; ptr++)
if (*ptr != ' ') printf("%c", *ptr);
}
int main()
{
char buf[BUFSIZ];
while (printf("String: ") && fgets(buf, BUFSIZ, stdin) && *buf!='\n') {
qsort(buf, strlen(buf) - 1, sizeof(char), compare);
print_skip_spaces(buf);
}
return 0;
}
Объяснение кода листинга программы
- Вводится слово с клавиатуры и сохраняется в буфере buf типа char[BUFSIZ]
- Используя функцию qsort, буфер buf сортируется в лексикографическом порядке (по возрастанию) с использованием функции compare в качестве функции сравнения.
- Используя функцию print_skip_spaces, отсортированное слово выводится на экран, пропуская пробелы.
- Процесс повторяется до тех пор, пока пользователь не введет пустую строку или не достигнет ограничения на количество вводимых данных (buf имеет ограниченную длину).