Вывести последнее слово введенной строки - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Ввести строку. Вывести последнее слово введенной строки. Есть программа, которая выводит первое слово. Что в ней нужно изменить, чтобы выводилось последнее?
#include <stdio.h>
 
void main ()
{
char s[40];
int j;
printf ("input string: ");
gets (s);
j=0; 
while (s[j]!= ' ' && s[j]!='\0')
{
putchar(s[j++]);
 
}
getchar ();
getchar ();
}

Решение задачи: «Вывести последнее слово введенной строки»

textual
Листинг программы
#include <stdio.h>
#include <ctype.h>
#include <string.h>
void main ()
{
char s[40];
char str[40];
int counter = 0;
int j;
printf ("input string: ");
gets (s);
j=0; 
for(int i = strlen(s)-1; i>=0; i--) {
    if(ispunct(unsigned char(s[i])) != NULL || isspace(unsigned char(s[i])) != NULL) {
        str[counter] = '\0';
        break;
    }
    else { 
        str[counter] = s[i];
        counter++;
    }
}
 
printf("%s\n", strrev(str));
getchar ();
}

Объяснение кода листинга программы

Вывод последнего слова введенной строки

  1. Включаем необходимые заголовочные файлы:
    • stdio.h для работы с функциями ввода-вывода
    • ctype.h для работы с функциями проверки символов на буквы, цифры, знаки препинания и пробелы
    • string.h для работы с функцией strlen, strcpy и strrev
  2. Создаем переменные:
    • char s[40] для хранения введенной строки
    • char str[40] для хранения отфильтрованной строки
    • int counter = 0 для подсчета количества символов в отфильтрованной строке
    • int j = 0 для хранения индекса последнего символа в отфильтрованной строке
  3. Запрашиваем ввод строки:
    • printf (input string: );
    • gets (s);
  4. Начинаем цикл:
    • j=0;
    • for(int i = strlen(s)-1; i>=0; i--)
    • if(ispunct(unsigned char(s[i])) != NULL || isspace(unsigned char(s[i])) != NULL)
    • str[counter] = '\0';
    • break;
    • else
    • str[counter] = s[i];
    • counter++;
  5. Выводим отфильтрованную строку в обратном порядке:
    • printf(%s\n, strrev(str));
  6. Получаем символ ввода:
    • getchar(); Обратите внимание, что в коде есть потенциальная уязвимость буферной переполненией, поскольку функция gets записывает ввод пользователя в буфер без проверки его размера.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.4 из 5
Похожие ответы