Найти самое короткое слово в предложении - C (СИ)
Формулировка задачи:
Самое короткое слово в предложении (Предложение - последовательность слов, разделенных пробелами. Конец предложения - точка.)(первое из самых коротких, если их несколько) разбить на два слова пополам. Если в этом слове нечётное кол-во символов, то последний символ слова удалить.
Решение задачи: «Найти самое короткое слово в предложении»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
char * shortest_word(char * str, const char * delim) {
if ( str = strtok(str, delim) ) {
char * next = shortest_word(NULL, delim);
if ( ! next )
return str;
return ( strlen(str) > strlen(next) ) ? next : str;
}
return NULL;
}
#define DELIM " \t\n"
int main(void) {
char buf[BUFSIZ];
while ( printf("String: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' )
printf("First shortest word: %s\n", shortest_word(buf, DELIM));
return 0;
}
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы для работы с памятью и строками.
- Определяется функция
shortest_word, которая принимает указатель на строку и указатель на разделитель в качестве аргументов. - Внутри функции происходит проверка наличия строки, которую можно разделить. Если строка есть, то вызывается рекурсивно функция
shortest_wordс аргументомNULLи разделителем. - Результатом работы функции будет либо самое короткое слово, либо исходная строка, если самое короткое слово отсутствует.
- В функции
mainсоздается буфер для считывания строки с помощьюfgets. - В цикле запрашивается ввод строки до тех пор, пока она не будет пустой.
- Внутри цикла вызывается функция
shortest_wordдля получения самого короткого слова в строке и выводится на экран. - В конце программы возвращается значение
0, что означает успешный конец работы программы.