Найти строку максимальной длины в тексте без библиотеки string.h - C (СИ)
Формулировка задачи:
Нужна программа определения строки максимальной длины в тексте, что вводится с клавиатуры без библиотеки string.h
Решение задачи: «Найти строку максимальной длины в тексте без библиотеки string.h»
textual
Листинг программы
#include <stdio.h> #include <ctype.h> typedef struct Word_t { char* str; size_t len; } Word; //----------------------------------------------------------------------------- size_t getWord(char* str, char** begin, char** end) { for (; *str && !isalpha(*str); ++str) { ; } *begin = str; for (; *str && isalpha(*str); ++str) { ; } *end = str; return *end - *begin; } //----------------------------------------------------------------------------- Word getMaxWord(char* str) { Word maxWord = {NULL, 0}; char* begin, * end; size_t len = 0; while ((len = getWord(str, &begin, &end))) { if (maxWord.len < len) { maxWord.str = begin; maxWord.len = len; } str = end; } return maxWord; } //----------------------------------------------------------------------------- int main() { char text[] = "Hello World. This is test program!"; Word word = getMaxWord(text); if (word.len) { printf("%.*s\n", word.len, word.str); } return 0; }
Объяснение кода листинга программы
- Структура
Word_t
объявляет переменныеstr
иlen
типаchar*
иsize_t
соответственно. - Функция
getWord
принимает два указателяstr
и два указателя-результатаbegin
иend
. - В первой части цикла, пока не встретится буква или пробел, строка сдвигается к следующему символу.
- Во второй части цикла, пока не встретится символ, не являющийся буквой, строка сдвигается к следующему символу.
- Длина слова сохраняется в переменной
len
, и если это слово длиннее, чем предыдущее максимальное слово, то обновляется значениеmaxWord
. - В цикле while, пока есть слова в строке, вызывается функция
getWord
и проверяется, является ли текущее слово длиннее максимального слова. - Если текущее слово длиннее, то обновляется значение
maxWord
. - В функции
main
объявляется переменнаяtext
типаchar*
и инициализируется строкойHello World. This is test program!
. - Вызывается функция
getMaxWord
с аргументомtext
. - Результат функции
getMaxWord
присваивается переменнойword
. - Если длина слова больше нуля, то выводится максимальное слово.
- В функции
main
возвращается 0, что означает успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д