Вывести последнее слово введенной строки - 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
записывает ввод пользователя в буфер без проверки его размера.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д