Подсчитать количество букв в третьем слове и добавить пробел после каждой буквы третьего слова - C (СИ)
Формулировка задачи:
Дано задание.
"Подсчитать количество букв в третьем слове и добавить пробел после каждой буквы третьего слова." Обработку строки реализовать с помощью функций, описанных в <string.h> и с использованием указателей.
Как его сделать через массив символов я знаю, а вот через указатели и функции что-то не догоняю.
Помогите пожалуйста сделать, либо хотя-бы направьте в каком русле думать!))
Решение задачи: «Подсчитать количество букв в третьем слове и добавить пробел после каждой буквы третьего слова»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
#define DELIM " \t\n"
#define WORD_NUMBER 3
int main(void) {
char str[] = "any many money more", * p;
int len = 0, nword = 0;
for ( p = strtok(str, DELIM); p; p = strtok(NULL, DELIM) ) {
if ( ++nword == WORD_NUMBER ) {
len = strlen(p);
while ( *p )
printf("%c ", *p++);
}
else
printf("%s ", p);
}
printf("\nLength of %d-th word %d characters.\n", WORD_NUMBER, len);
return 0;
}
Объяснение кода листинга программы
В этом коде:
- Объявлены две переменные:
strиp.strявляется массивом символов, содержащим исходную строкуany many money more.pявляется указателем на первый символ в массивеstr.
- Переменная
lenинициализируется значением 0 и используется для хранения длины третьего слова. - Переменная
nwordинициализируется значением 0 и используется для подсчета количества слов в исходной строке. - Используется функция
strtokдля разделения исходной строки на слова.strtokпринимает два аргумента: строку, которую нужно разбить на слова, и разделитель (в данном случае пробел, табуляция и символ новой строки).- В цикле
forпроисходит поиск следующего слова в строке. - Если текущее слово является третьим словом (индекс
nwordравен 2), то:- Длина текущего слова сохраняется в переменной
len. - С помощью цикла
whileи оператораprintfкаждое символы текущего слова выводится на экран с добавлением пробела.
- Длина текущего слова сохраняется в переменной
- Если текущее слово не является третьим словом, то оно выводится на экран без изменений.
- После окончания цикла
forвыводится сообщение о длине третьего слова. - В конце программы возвращается 0, что означает успешное выполнение программы.