Определить последнее вхождение символа “р” в строке - 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, что означает успешное завершение программы.