Удалить из текстового файла группы символов, расположенные между скобками - 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) );
}
Задачу нужно сделать в C
Вот тоже начинал делать, но не знаю как вывести, помогите пожалуйста
#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;
}

Объяснение кода листинга программы

  1. Подключение необходимых библиотек для работы с файлами и булевыми значениями.
  2. Объявление основной функции программы, в которой будет выполняться задача.
  3. Объявление переменной s, которая содержит исходную строку.
  4. Объявление переменной inside_brackets, которая отвечает за нахождение в скобках.
  5. Цикл по всем символам строки s.
  6. В каждой итерации цикла проверяется текущий символ.
  7. Если символ равен (, то переменная inside_brackets устанавливается в значение true.
  8. Если символ равен ), то переменная inside_brackets устанавливается в значение false.
  9. Если символ не равен ( или ), и переменная inside_brackets равна false, то символ выводится на экран.
  10. В конце программы выводится символ новой строки для перехода на новую строку.
  11. Завершение программы с возвратом значения 0.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.778 из 5
Похожие ответы