Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.06.2016, 17:01   #31
Narsky
Форумчанин
 
Регистрация: 21.06.2016
Сообщений: 109
По умолчанию

Код:
#define _CRT_SECURE_NO_WARNINGS

#include <iostream>
#include <ctime>
#include <string>
using namespace std;

int main()
{
	setlocale(0, "rus");

	FILE *file;
	char *fname1 = "INPUT.txt";
	char *fname2 = "OUTPUT.txt";
	char ch;

	cout << "\nИсходный файл, записанный в INPUT.txt:\n";
	file = fopen(fname1, "r");

	while (!feof(file))
	{
		fscanf(file, "%c", ch);  
		cout << ch;
	}
Теперь, когда вывели данные, нам нужно открыть второй файл, внести в него эти данные с помощью такого же цикла, только вместо fscanf fprintf, и сразу же в цикле удалять символы между скобками?
Или сперва нужно закрыть файл?
Narsky вне форума Ответить с цитированием
Старый 30.06.2016, 17:06   #32
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,830
По умолчанию

Цитата:
внести в него эти данные с помощью такого же цикла
зачем вам еще один цикл? чем этот не нравится?

Цитата:
только вместо fscanf fprintf
почему? чем этот файл будет отличаться от первого?

Цитата:
сразу же в цикле удалять символы между скобками
не удалять, а не выводить

Цитата:
Или сперва нужно закрыть файл?
Если вы файл закроете, то откуда вы читать будете символы для анализа и вывода? Если вы учебник закрыли, то как вы из него условие на доску перепишите? Где в http://programmersforum.ru/showpost....18&postcount=6 закрытие файлов?
p51x вне форума Ответить с цитированием
Старый 30.06.2016, 17:14   #33
Narsky
Форумчанин
 
Регистрация: 21.06.2016
Сообщений: 109
По умолчанию

Цитата:
зачем вам еще один цикл? чем этот не нравится?
Т.е. в этом цикле продолжаем работать, но измененный ch не выводим, так?
Цитата:
не удалять, а не выводить
Оговорился)
Цитата:
Если вы файл закроете, то откуда вы читать будете символы для анализа и вывода? Если вы учебник закрыли, то как вы из него условие на доску перепишите? Где в http://programmersforum.ru/showpost....18&postcount=6 закрытие файлов?
Хорошо, спасибо)
Код:
#define _CRT_SECURE_NO_WARNINGS

#include <iostream>
#include <ctime>
#include <string>
using namespace std;

int main()
{
	setlocale(0, "rus");

	FILE *file;
	char *fname1 = "INPUT.txt";
	char *fname2 = "OUTPUT.txt";
	char ch;
	int flag = 0

	cout << "\nИсходный файл, записанный в INPUT.txt:\n";
	file = fopen(fname1, "r");

	while (!feof(file))
	{
		fscanf(file, "%c", ch);  
		cout << ch;
		if (ch == '(') flag = flag + 1;
		if ((ch == ')') && (flag > 0)) flag = flag - 1;
Цикл закрывать? Или
Цитата:
если флаг равен 0, то пишем ЭТОТ ОДИН СИМВОЛ в выходной
нужно до цикла открыть второй файл кодом
Код:
file = fopen(fname2, "w");
а в цикл добавить:
Код:
if (flag == 0)
{
fprintf(file, "%c", ch);
}
Или это будет записываться в первый файл, а не во второй?
Narsky вне форума Ответить с цитированием
Старый 30.06.2016, 19:01   #34
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,830
По умолчанию

Цитата:
Цикл закрывать? Или
Вы прочитали последний абзаци предыдущего моего поста или просто процитировали. Потому что вопросы те же и ссылка та же, где описано, что в цикле и когда закрываем.

Цитата:
нужно до цикла открыть второй файл кодом
Нужно. И заведите наконец-то другую переменную для второго файла или у вас приступ тупизма и вы считает, то для файла только переменная file?
p51x вне форума Ответить с цитированием
Старый 30.06.2016, 19:06   #35
Narsky
Форумчанин
 
Регистрация: 21.06.2016
Сообщений: 109
По умолчанию

Цитата:
Вы прочитали последний абзаци предыдущего моего поста или просто процитировали. Потому что вопросы те же и ссылка та же, где описано, что в цикле и когда закрываем.
Просто убедился)
Цитата:
Нужно. И заведите наконец-то другую переменную для второго файла или у вас приступ тупизма и вы считает, то для файла только переменная file?
Посмотрите пожалуйста:
Код:
#define _CRT_SECURE_NO_WARNINGS

#include <iostream>
#include <ctime>
#include <string>
using namespace std;

int main()
{
	setlocale(0, "rus");

	FILE *file, *file2;
	char *fname1 = "INPUT.txt";
	char *fname2 = "OUTPUT.txt";
	char ch;
	int flag = 0;

	cout << "\nИсходный файл, записанный в INPUT.txt:\n";
	file = fopen(fname1, "r");
	file2 = fopen(fname2, "r");

	while (!feof(file))
	{
		fscanf(file, "%c", ch);  
		cout << ch;
		if (ch == '(') flag = flag + 1;
		if ((ch == ')') && (flag > 0)) flag = flag - 1;
		if (flag == 0)
		{
			fprintf(file2, "%c", ch);
		}
	}
Narsky вне форума Ответить с цитированием
Старый 30.06.2016, 19:27   #36
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,830
По умолчанию

Один из файлов все-таки надо открыть для записи и в конце закрывать файлы + fscanf хочет указатель (разве компилятор вам об этом не сказал? )
p51x вне форума Ответить с цитированием
Старый 30.06.2016, 19:44   #37
Narsky
Форумчанин
 
Регистрация: 21.06.2016
Сообщений: 109
По умолчанию

Извините, не понял вас: открыть нужно только один из них или на данный момент не открыто ни одного?
Закрывать файлы с помощью кода?
Код:
fclose(file);
fclose(file2);
Добавил указатели, но компилятор все равно на это указывает.
Код:
#define _CRT_SECURE_NO_WARNINGS

#include <iostream>
#include <ctime>
#include <string>
using namespace std;

int main()
{
	setlocale(0, "rus");

	FILE *file, *file2;
	char *fname1 = "INPUT.txt";
	char *fname2 = "OUTPUT.txt";
	char *ch;
	int flag = 0;

	cout << "\nИсходный файл, записанный в INPUT.txt:\n";
	file = fopen(fname1, "r");
	file2 = fopen(fname2, "r");

	while (!feof(file))
	{
		fscanf(file, "%c", *ch);  
		cout << ch;
		if (*ch == '(') flag = flag + 1;
		if ((*ch == ')') && (flag > 0)) flag = flag - 1;
		if (flag == 0)
		{
			fprintf(file2, "%c", ch);
		}
	}
        fclose(file);
        fclose(file2);

	system("pause");
	return 0;
}
Narsky вне форума Ответить с цитированием
Старый 30.06.2016, 19:51   #38
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,830
По умолчанию

Цитата:
открыть нужно только один из них или на данный момент не открыто ни одного?
Прочитайте в справке для чего вы написали "r"

Цитата:
Добавил указатели, но компилятор все равно на это указывает.
Вы разыменовали,а не взяли адрес &
p51x вне форума Ответить с цитированием
Старый 30.06.2016, 19:59   #39
Narsky
Форумчанин
 
Регистрация: 21.06.2016
Сообщений: 109
По умолчанию

Цитата:
Прочитайте в справке для чего вы написали "r"
Кажется я вас понял)
Код:
#define _CRT_SECURE_NO_WARNINGS

#include <iostream>
#include <ctime>
#include <string>
using namespace std;

int main()
{
	setlocale(0, "rus");

	FILE *file, *file2;
	char *fname1 = "INPUT.txt";
	char *fname2 = "OUTPUT.txt";
	char *ch;
	int flag = 0;

	cout << "\nИсходный файл, записанный в INPUT.txt:\n";
	file = fopen(fname1, "r");
	file2 = fopen(fname2, "w");

	while (!feof(file))
	{
		fscanf(file, "%c", &ch);  
		cout << ch;
		if (*ch == '(') flag = flag + 1;
		if ((*ch == ')') && (flag > 0)) flag = flag - 1;
		if (flag == 0)
		{
			fprintf(file2, "%c", ch);
		}
	}

        fclose(file);
        fclose(file2);
	system("pause");
	return 0;
}

Последний раз редактировалось Narsky; 30.06.2016 в 20:14.
Narsky вне форума Ответить с цитированием
Старый 30.06.2016, 20:16   #40
Narsky
Форумчанин
 
Регистрация: 21.06.2016
Сообщений: 109
По умолчанию

Теперь добавить в код:
Код:
file2 = fopen(fname2, "r");
while (!feof(file))
{
fscanf(file2, "%c", &ch);
cout << ch;
}
fclose(file2);
Так? Только я не уверен, нужно ли добавлять цикл

Последний раз редактировалось Narsky; 30.06.2016 в 20:18.
Narsky вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлом Despot777 Общие вопросы C/C++ 3 26.10.2013 14:51
Работа с файлом Rik55rus Общие вопросы C/C++ 5 06.10.2012 15:35
Работа с файлом! Kami-sama Visual C++ 0 07.05.2011 20:48
работа с файлом Настя9008 Помощь студентам 19 06.12.2010 23:18
Работа с файлом Leoman Помощь студентам 0 02.04.2010 21:57