Символьные строки без стандартных функций - C (СИ)
Формулировка задачи:
Помогите, пожалуйста, написать программу, которая вводит строку текста, разбивает ее на лексемы и выводит лексемы в обратном порядке. (Не используя strtok)
Решение задачи: «Символьные строки без стандартных функций»
textual
Листинг программы
#include <stdio.h> #include <stdio.h> int main() { char str[] = "You can also:click on; a link in! the move list, to go back? in time and. see what" " the board looked like just after that move was made."; char delim[] = " \t\n,.?!;:", *first, *last; int i, j, flag = 0, sym = 1; for(i = 0; str[i]; i++, sym = 1){ for(j = 0; delim[j]; j++) if(str[i] == delim[j]) sym = 0; if(sym){ if(!flag){ first = &str[i]; flag = 1; } } else{ if(flag){ last = &str[i - 1]; flag = 0; while(last >= first) putchar(*last--); putchar('\n'); } } } return 0; }
Объяснение кода листинга программы
- Включаются заголовочные файлы stdio.h и stdio.h
- Объявляется переменная str типа char, которая содержит строку
You can also:click on; a link in! the move list, to go back? in time and. see what the board looked like just after that move was made.
- Объявляется переменная delim типа char, которая содержит строку
\t\n,.?!;:
- Объявляются переменные i, j типа int, которые используются в циклах
- Объявляются переменные flag и sym типа int, которые используются для контроля выхода из циклов
- Задается значение переменной sym равное 1
- В цикле for перебираются символы строки str
- В каждой итерации цикла проверяется, является ли текущий символ одним из символов, разделенных строкой delim
- Если текущий символ является одним из символов delim, то значение переменной sym меняется на 0
- Если значение переменной sym равно 1, то проверяется, была ли ранее установлена переменная flag
- Если переменная flag еще не была установлена, то значение переменной first присваивается адрес текущего символа str, а переменная flag устанавливается в 1
- Если значение переменной sym равно 0, то проверяется, была ли ранее установлена переменная flag
- Если переменная flag уже была установлена, то значение переменной last присваивается адрес предыдущего символа str, а переменная flag устанавливается в 0
- Если переменная flag равна 0, то выводится последовательность символов от last до first с помощью функции putchar
- Выводится символ новой строки с помощью функции putchar
- Цикл for завершается
- Возвращается 0, что означает успешное завершение программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д