Исключить из текста группы символов, расположенные между скобками - C (СИ)
Формулировка задачи:
Подскажите пожалуйста,как "Исключить из текста группы символов, расположенные между скобками ( , ). Сами скобки тоже должны быть исключены. Предполагается, что внутри каждой пары скобок нет других скобок."
Буду очень благодарен,если вы напишете листинг с комментариями или без,хотя бы что-нибудь .
Спасибо!
Задание звучит так :
Начальный текст (5 - 10 строк по 30 - 40 символов) набрать в текстовом редакторе. Написать программу, позволяющую считать текст из файла, распечатать его, обработать строки в соответствии с вариантом задания. Результаты работы программы вывести на экран.
Дан текст, состоящий из слов и формул. Исключить из текста группы символов, расположенные между скобками ( , ). Сами скобки тоже должны быть исключены. Предполагается, что внутри каждой пары скобок нет других скобок.
Решение задачи: «Исключить из текста группы символов, расположенные между скобками»
textual
Листинг программы
#include <stdio.h> #include <assert.h> int main(int argc, char ** argv) { int c, flag; FILE * fin, * fout; if ( argc > 2 ) { fout = fopen(argv[2], "w"); assert(fout); } else fout = stdout; if ( argc > 1 ) { fin = fopen(argv[1], "r"); assert(fin); } else fin = stdin; flag = 0; while ( ( c = fgetc(fin) ) != EOF ) { if ( ! flag ) { if ( c == '(' ) flag = 1; /* else fputc(c, fout); */ } else { if ( c == ')' ) flag = 0; else fputc(c, fout); } } return ( fclose(fin) | fclose(fout) ); }
Объяснение кода листинга программы
- В коде представлен программа на языке C, которая предназначена для удаления из текста групп символов, расположенных между скобками.
- Для работы программы необходимо включить две библиотеки:
stdio.h
иassert.h
. - Программа принимает на вход один или два аргумента. Первый аргумент - это имя файла с исходным текстом, второй - имя файла, в который будет записан результат. Если аргументов больше двух, то второй аргумент не используется.
- Программа открывает файл для чтения и проверки на корректность.
- Если первый аргумент не передан, то в качестве исходного файла используется стандартный ввод.
- Если второй аргумент не передан, то в качестве выходного файла используется стандартный вывод.
- В программе выделяется буфер для хранения текущего символа.
- В цикле while считывается каждый символ из исходного файла до достижения конца файла.
- Если буфер пуст и считанный символ является открывающей скобкой, то в буфер записывается закрывающая скобка.
- Если буфер не пуст и считанный символ является закрывающей скобкой, то в буфер записывается открывающая скобка.
- Если буфер не пуст и считанный символ не является скобкой, то он записывается в выходной файл.
- Если буфер пуст и считанный символ не является скобкой, то он также записывается в выходной файл.
- После окончания чтения исходного файла, программа записывает в выходной файл оставшийся в буфере символ.
- Программа закрывает исходный и выходной файлы.
- Возвращаемое значение программы - это сумма кодов закрытия исходного и выходного файлов.
- Если во время работы программы происходит ошибка, то возвращаемое значение будет отличным от нуля.
- В коде присутствуют две комментарийные строки, которые предназначены для отладки программы.
- Программа не использует библиотеку
stdlib.h
, которая предназначена для работы с массивами и строками. - Программа не использует библиотеку
string.h
, которая предназначена для работы со строками. - Программа не использует библиотеку
ctype.h
, которая предназначена для работы с символами.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д