Удалить из текстового файла группы символов, расположенные между скобками - 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.