Удалить из текстового файла группы символов, расположенные между скобками - C (СИ)
Формулировка задачи:
Ребят, помогите пожалуйста, завтра последний день сдачи, если сделано будет, получу автомат, вот сама формулировка задачи: Задачу нужно сделать в C
Удалить из текстового файла группы символов, расположенные между скобками. Сами скобки тоже должны быть исключены. Предполагается, что внутри каждой пары скобок нет других скобок
Формулировка общая:Написать программу для решения поставленной задачи см варианты заданий На экран ( . ). вывести исходный файл а также преобразованный если такой требуется получить по ( , заданию).
Вот что удалось найти, но не работает:#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; } } return ( fclose(fin) | fclose(fout) ); }
Вот тоже начинал делать, но не знаю как вывести, помогите пожалуйста
#include <stdio.h> int main(int argc, char* argv[]) { int c, flag; char s[100]; FILE *fin, *fout; if (argc > 2) { fout = fopen(argv[2], "w"); } else fout = stdout; if (argc > 1) { fin = fopen(argv[1], "r"); } 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; } } } return (fclose(fin) | fclose(fout)); }
Решение задачи: «Удалить из текстового файла группы символов, расположенные между скобками»
textual
Листинг программы
#include <stdio.h> #include <stdbool.h> int main(void) { const char* s = "ab(ra)ca(dab)ra"; bool inside_brackets = false; for (char* i = s; *i != '\0'; i++) { switch (*i) { case '(': inside_brackets = true; break; case ')': inside_brackets = false; break; default: if (!inside_brackets) { putchar(*i); } break; } } putchar('\n'); return 0; }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с файлами и булевыми значениями.
- Объявление основной функции программы, в которой будет выполняться задача.
- Объявление переменной
s
, которая содержит исходную строку. - Объявление переменной
inside_brackets
, которая отвечает за нахождение в скобках. - Цикл по всем символам строки
s
. - В каждой итерации цикла проверяется текущий символ.
- Если символ равен
(
, то переменнаяinside_brackets
устанавливается в значениеtrue
. - Если символ равен
)
, то переменнаяinside_brackets
устанавливается в значениеfalse
. - Если символ не равен
(
или)
, и переменнаяinside_brackets
равнаfalse
, то символ выводится на экран. - В конце программы выводится символ новой строки для перехода на новую строку.
- Завершение программы с возвратом значения 0.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д