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