Выделение последнего слова из введенной строки - C (СИ) (247873)
Формулировка задачи:
Написать программу выделения последнего слова из введенной строки.
Решение задачи: «Выделение последнего слова из введенной строки»
textual
Листинг программы
char *p, *str = "some special "; int flag = 1; p = str + strlen(str) - 1; while (p > str) { if (*p == ' ') if (flag == 1) { p--; continue; } else { p++; break; } flag = 0; p--; } printf("%s\n", p);
Объяснение кода листинга программы
В данном коде происходит следующее:
- Объявляются две переменные:
str
- указатель на строкуsome special
;flag
- целочисленная переменная, инициализированная значением 1.
- В третьей строке кода переменная
p
инициализируется значениемstr + strlen(str) - 1
. То есть,p
указывает на последний символ в строкеsome special
. - Затем, в цикле while, который будет выполняться до тех пор, пока
p
большеstr
, происходит следующее:- Если символ, на который указывает
p
, равен пробелу, и переменнаяflag
равна 1, то происходит следующее:p--; continue
. То есть,p
уменьшается на единицу и выполнение цикла продолжается. Это нужно для того, чтобы пропустить пробелы, которые находятся перед последним словом. - Если символ, на который указывает
p
, равен пробелу, и переменнаяflag
равна 0, то происходит следующее:p++; break
. То есть,p
увеличивается на единицу и выполнение цикла прерывается. Это нужно для того, чтобы выйти из цикла, когда будет найден первый пробел после последнего слова. - Переменная
flag
устанавливается равной 0. p
уменьшается на единицу.
- Если символ, на который указывает
- По завершению цикла, в
p
будет указывать на последнее слово в строке. - И, наконец, с помощью функции
printf
выводится значение переменнойp
. Таким образом, данный код выделяет последнее слово из введенной строки.