Определить последнее вхождение символа “р” в строке - C (СИ)
Формулировка задачи:
Заданы 2 строки, состоящие из слов, разделенных пробелами. Определить последнее вхождение символа “р” в строке и вывести строку, начиная с первого символа и до последнего “р” в строке. Если такого символа нет, то вывести всю строку, исключив из нее последнее слово.
помогите пожалуйста! буду благодарен,спасибо скажу!
желательно по понятнее и по простому.
Решение задачи: «Определить последнее вхождение символа “р” в строке»
textual
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define SIZE 1024
- int main(void) {
- char buf[SIZE];
- int p_pos = -1;
- int i = 0;
- puts("Enter string:");
- fgets(buf, SIZE, stdin);
- i = strlen(buf);
- while (i)
- if (buf[--i] == 'p') {
- p_pos = i;
- break;
- }
- if (p_pos != -1) {
- buf[p_pos + 1] = '\0';
- puts(buf);
- } else
- puts(buf);
- return 0;
- }
Объяснение кода листинга программы
- Подключение необходимых библиотек:
, , . - Установка размера строки в 1024 символа (или 1 Кб) с помощью #define SIZE.
- Объявление переменных:
— buf — массив символов, в который будет записываться строка.
— p_pos — позиция последнего вхождения символа
р
в строке. — i — счётчик для цикла. - Вывод сообщения с просьбой ввести строку и считывание её в массив buf с помощью fgets().
- Вычисление длины строки с помощью функции strlen().
- Цикл while, который будет выполняться до тех пор, пока i больше или равно нулю.
- Внутри цикла проверка, является ли текущий символ
р
. Если да, то запоминаем позицию этого символа в переменной p_pos и выходим из цикла с помощью оператора break. - Если после цикла значение p_pos не равно -1, то выводим сообщение об успешном поиске и выводим найденную подстроку с помощью puts(). В противном случае выводим всю строку без изменений.
- Возврат 0, что означает успешное завершение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д