Вывести последнее слово введенной строки - 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 (); }
Объяснение кода листинга программы
Вывод последнего слова введенной строки
- Включаем необходимые заголовочные файлы:
stdio.h
для работы с функциями ввода-выводаctype.h
для работы с функциями проверки символов на буквы, цифры, знаки препинания и пробелыstring.h
для работы с функциейstrlen
,strcpy
иstrrev
- Создаем переменные:
char s[40]
для хранения введенной строкиchar str[40]
для хранения отфильтрованной строкиint counter = 0
для подсчета количества символов в отфильтрованной строкеint j = 0
для хранения индекса последнего символа в отфильтрованной строке
- Запрашиваем ввод строки:
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();
Обратите внимание, что в коде есть потенциальная уязвимость буферной переполненией, поскольку функцияgets
записывает ввод пользователя в буфер без проверки его размера.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д