Построить частотный словарь слов строки и вывести их в алфавитном порядке - C (СИ)
Формулировка задачи:
С клавиатуры вводится строка. Нужно построить частотный словарь слов строки и вывести их в алфавитном порядке. Разделителями считаются пробел и табуляция.
я хочу использовать массив структур, в которых в конечном итоге будет записано слово и сколько раз оно встречается.
struct wotd{
int count;
char * w;
};
Подскажите, пожалуйста, как выделить слова)))
Решение задачи: «Построить частотный словарь слов строки и вывести их в алфавитном порядке»
textual
Листинг программы
#include <stdio.h>
#include <ctype.h>
typedef struct word_t
{
char* string;
size_t length;
} TWord;
//-----------------------------------------------------------------------------
TWord GetWord(char* text)
{
char* begin = text;
char* end;
for (; *begin && isspace(*begin); ++begin) { ; }
for (end = begin; *end && !isspace(*end); ++end) { ; }
TWord word = {begin, end - begin};
return word;
}
//-----------------------------------------------------------------------------
void PrintAllWords(char* text)
{
TWord word;
while (*text)
{
word = GetWord(text);
printf("%.*s\n", word.length, word.string);
text += word.length + 1;
}
}
//-----------------------------------------------------------------------------
int main(int argc, const char* argv[])
{
char text[] = "Other locales may consider a different"
"selection of characters as white-spaces";
PrintAllWords(text);
return 0;
}
Объяснение кода листинга программы
Вывод списка элементов кода:
- Тип данных TWord представляет структуру слова, содержащую строку и длину строки.
- Функция GetWord() извлекает слова из текста, используя пробелы в качестве разделителей.
- Функция PrintAllWords() печатает все слова в тексте.
- В функции main() определен массив текста для обработки.
- Вызывается функция PrintAllWords() для печати всех слов в массиве текста.
- Программа завершается без ошибок.