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