Напишите программу, которая выводит последнее слово переданной ей символьной строки - C (СИ)
Формулировка задачи:
Почему не работает этот код?
#include <stdio.h>
#include <string.h>
int main()
{
char arr[400000];
int i,k;
scanf("%s",&arr);
k=strlen(arr);
for (i=k;i>=k;i--)
{
if (arr[i] != ' ')
printf("%c",arr[i]);
}
return 0;
}Решение задачи: «Напишите программу, которая выводит последнее слово переданной ей символьной строки»
textual
Листинг программы
#include "conio.h"
#include "stdio.h"
#include "windows.h"
int main(){
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
char * str = new char[1000];
printf("Введите строку:\n");
fgets(str, 1000, stdin);
int n = -1, k;
for (int i = 0; i < 1000; i++){
if (str[i] == ' '){
n = i;
}
if (str[i] == '\0'){
k = i;
break;
}
}
printf("Последнее слово:\n");
for (int i = n + 1; i < k; i++){
printf("%c", str[i]);
}
delete[] str;
_getch();
return 0;
}
Объяснение кода листинга программы
В этом коде:
- Строка: Вводится пользователем с помощью функции
fgets(). - Переменная n: Используется для хранения индекса последнего пробела в строке.
- Переменная k: Используется для хранения индекса конца строки (включая символ новой строки).
- Цикл for: Проходит по каждому символу строки, начиная с 0 и заканчивая 999.
- Если str[i] == ' ': то значение переменной n устанавливается в i.
- Если str[i] == '\0': то значение переменной k устанавливается в i, и цикл прерывается.
- Цикл for: Проходит по символам от n + 1 до k - 1 (не включая пробелы и символы новой строки).
- Выводит: каждый символ с помощью функции
printf(). - Значение переменной str освобождается с помощью функции delete[].
- Функция _getch(): используется для приостановки выполнения программы до тех пор, пока пользователь не нажмет клавишу.
- Возвращает 0: чтобы указать, что программа успешно завершилась.