Разбить строку на лексемы - C (СИ)
Формулировка задачи:
Напишите программу, которая вводит строку текста, разбивает его на лексемы с помощью strtok и выводит лексемы в обратном порядке.
Решение задачи: «Разбить строку на лексемы»
textual
Листинг программы
#include <iostream>
#include <cstring>
//#include <CyrIOS.h>
using namespace std;
int main()
{const int size = 100;
char str1[size];
cout << "Введите строку текста: ";
cin.getline(str1, size);
char* c = strtok(str, " ,-");
while(c != NULL)
{
revers(c);
c = strtok(NULL, " ,-");
}
}
void revers(char* c)
{
int end = strlen(c) - 1;
for(int i = end; i >= 0; i--)
{
cout << c[i];
}
cout << ' ';
}
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с C++ (iostream, cstring).
- Объявление константы size, которая определяет максимальный размер вводимой строки.
- Создание массива символов str1 с фиксированным размером.
- Вывод сообщения с просьбой ввести строку текста.
- Считывание строки текста с помощью функции getline, помещаем ее в массив str1.
- Вызов функции strtok, которая разобьет введенную строку на отдельные лексемы по заданному разделителю (в данном случае
,-). - Полученное значение (указатель на первую лексему) сохраняем в переменную c.
- В цикле while (пока не будет получено значение NULL) выводим каждую лексему в обратном порядке с помощью функции revers.
- После каждой итерации цикла вызываем strtok с аргументом NULL, чтобы получить следующую лексему.
- Внутри функции revers происходит вывод символов в обратном порядке с помощью цикла for и выводится пробел в конце.
- В конце программы добавляется пробел для разделения лексем.
- Не забудьте #include
для использования функции strlen и strtok. - Не забудьте #include
для использования функций cout и cin. - Не забудьте включить директиву using namespace std, чтобы использовать функции cin и cout без явного указания std::.
- Функция revers не принимает аргументов, но должна работать с указателем на символ.
- Внутри цикла for необходимо использовать индексы для обращения к символам в обратном порядке (от strlen - 1 до 0).
- Значение strlen - 1 должно быть использовано для обращения к последнему символу в строке.
- Функция revers должна выводить символы в обратном порядке с помощью оператора cout.
- В конце функции revers необходимо выводить пробел с помощью оператора cout.
- Не забудьте добавить справку в комментарии к коду, описывающую его функциональность.