Ошибка! - C (СИ)
Формулировка задачи:
У меня почему-то strtok требует какое-то выражение...что это может ззначить?Выручайте!!!
Решение задачи: «Ошибка!»
textual
Листинг программы
char** text = NULL; char r[] = "\n\t ,.!?\r"; int flag1, flag2, flag3, flag4; flag1 = 0; flag2 = 0; flag3 = 0; flag4 = 0; char m,*w; int k = 0,n = 0; while (1) { system("cls"); puts("0. Help \n1. Enter the input text \n2. Show the output text\n3. Exit\n\n\nInput: \n"); m = getchar(); switch (m) { case '0': system("cls"); help(); getchar(); break; case '1': system("cls"); text = svoboda_text(text, k); puts("\n\nEnd of the text is string \"TAB\"\n"); text = vvod_texta(&k); flag1 = 1; break; case '2': system("cls"); if (flag1 == 1) { printf("\nVuvod texta:\n"); vyvod_texta(text, k); } else printf("\nText ne vveden!\n\n"); system("pause"); break; case '3': system("cls"); printf("\nFormat new text:\n"); if (flag1 == 1) { w = strtok(text*,r); while (w) n += strlen(w) & 1, w = strtok(0, r); } } } }
Объяснение кода листинга программы
- text - указатель на указатель строк, инициализированный значением NULL. В данном случае он используется для хранения введенного пользователем текста.
- r - строка, содержащая символы, которые используются в качестве разделителей.
- flag1, flag2, flag3, flag4 - флаги, которые используются для контроля различных условий в программе.
- m - текущий символ, введенный пользователем.
- w - указатель на текущую подстроку, которая извлекается из текста с помощью функции strtok.
- k - счетчик количества введенных строк.
- n - счетчик количества символов в текущей подстроке.
- В цикле while(1) происходит:
- Очистка экрана с помощью функции system(
cls
). - Вывод меню выбора на экран с помощью функции puts.
- Считывание введенного пользователем символа с помощью функции getchar.
- Выбор соответствующего действия в зависимости от введенного символа с помощью оператора switch.
- Очистка экрана с помощью функции system(
- При выборе действия '1' происходит:
- Очистка экрана с помощью функции system(
cls
). - Вывод строки
End of the text is string \
TAB`\n` на экран. - Присваивание указателю text значения, возвращаемого функцией svoboda_text, которая добавляет в текст новый символ.
- Вызов функции vvod_texta, которая считывает строку, введенную пользователем, и добавляет ее в конец текста.
- Установка флага flag1 в значение 1.
- Очистка экрана с помощью функции system(
- При выборе действия '2' происходит:
- Очистка экрана с помощью функции system(
cls
). - Проверка значения флага flag1. Если оно равно 1, то выводится введенный текст на экран с помощью функции vyvod_texta.
- Если значение флага flag1 не равно 1, то выводится сообщение
Text ne vveden!\n\n
. - Вызов функции system(
pause
) для ожидания нажатия клавиши пользователем.
- Очистка экрана с помощью функции system(
- При выборе действия '3' происходит:
- Очистка экрана с помощью функции system(
cls
). - Вывод сообщения
Format new text:\n
на экран. - Проверка значения флага flag1. Если оно равно 1, то происходит разделение текста на подстроки с помощью функции strtok и вычисление длины каждой подстроки с использованием операции
& 1
. - Если значение флага flag1 не равно 1, то выводится сообщение
Text ne vveden!\n\n
.
- Очистка экрана с помощью функции system(
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д