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

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

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

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

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

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <ctype.h>
  3. #include <string.h>
  4. void main ()
  5. {
  6. char s[40];
  7. char str[40];
  8. int counter = 0;
  9. int j;
  10. printf ("input string: ");
  11. gets (s);
  12. j=0;
  13. for(int i = strlen(s)-1; i>=0; i--) {
  14.     if(ispunct(unsigned char(s[i])) != NULL || isspace(unsigned char(s[i])) != NULL) {
  15.         str[counter] = '\0';
  16.         break;
  17.     }
  18.     else {
  19.         str[counter] = s[i];
  20.         counter++;
  21.     }
  22. }
  23.  
  24. printf("%s\n", strrev(str));
  25. getchar ();
  26. }

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

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

  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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы