Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
sPYfromFranik
0 / 0 / 0
Регистрация: 06.12.2011
Сообщений: 4
#1

Проблема с открытием файла для вывода текста в него. - C++

23.02.2012, 18:53. Просмотров 527. Ответов 4
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
ofstream offile; 
void royal_flush (); 
void straight_flush(); 
 
int main () 
{ 
//махинации
royal_flush (); 
} 
 
void royal_flush () 
{ 
if (x==1) 
offile<<"Royal"; 
else 
straight_flush(); 
} 
 
void straight_flush() 
{ 
if (y==1) 
offile<<"Straight"; 
}
Это часть кода программы. Проблема состоит в том, что если я пишу строчку offile.open ("text.txt") в функции main, то в файл ничего не записывает.
Если я строчку offile.open ("text.txt") напишу в функции royal_flush то, запись в файл будет из royal_flush, но не будет записи из straight_flush.
Если я строчку offile.open ("text.txt") напишу в функции straight_flush, то вывод в файл, будет срабатывать только в этой же функции, но не в royal_flush.
Если я эту же строчку напишу и в royal_flush и в straight_flush, то вывод в файл будет только в первой.

Почему так, и как с этим бороться?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.02.2012, 18:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проблема с открытием файла для вывода текста в него. (C++):

Перекодировка текста для вывода в окне - C++
Здравствуйте. Помогите реализовать перекодировку текстового файла с помощью функций CharToOem() и OemToChar(). После открытия текстового...

Проблемки с открытием файла - C++
Нужно открыть файл, считать из него имена других файлов и затем из этих файлов взять нужные данные. Из первого файла читает названия...

Ошибка с открытием и созданием файла - C++
#include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;clocale&gt; using namespace std; const...

Программа для вывода всех слов заданного текста в алфавитном порядке - C++
Господа , нужна ваша помощь .. Составить программу для вывода всех слов заданного текста в алфавитном порядке Если не затруднит...

Данные строкового типа(программа для введения текста, его кодирования и вывода результата) - C++
Последняя просьба! Придумать і сложить программу для введения текста, его кодирования и вывода результата. Заранее благодарю

Программа для вывода на экран содержимого изменяющегося файла - C++
Некая программа периодически изменяет содержимое файла. Для простоты пусть этот файл будет всегда иметь размер 400 байт и содержать в себе...

4
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
23.02.2012, 19:04 #2
sPYfromFranik, ну так не делайте ofstream глобальной переменной ... хотя в теории должно быть всё равно какая она, сейчас сам попробую.

Добавлено через 1 минуту
У меня всё работает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
 
ofstream offile;
void royal_flush ();
void straight_flush();
 
int main ()
{
    offile.open("text.txt");
royal_flush ();
}
 
void royal_flush ()
{
//if (x==1)
offile<<"Royal";
//else
straight_flush();
}
 
void straight_flush()
{
//if (y==1)
offile<<"Straight";
}
Добавлено через 1 минуту
Не забывайте только что по умолчанию ofstream не перезаписывает файл так что до запуска вашей программы у вас не должно быть файла text.txt.
1
sPYfromFranik
0 / 0 / 0
Регистрация: 06.12.2011
Сообщений: 4
23.02.2012, 19:28  [ТС] #3
Цитата Сообщение от Gepar Посмотреть сообщение
sPYfromFranik, ну так не делайте ofstream глобальной переменной ... хотя в теории должно быть всё равно какая она, сейчас сам попробую.

Добавлено через 1 минуту
У меня всё работает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
 
ofstream offile;
void royal_flush ();
void straight_flush();
 
int main ()
{
    offile.open("text.txt");
royal_flush ();
}
 
void royal_flush ()
{
//if (x==1)
offile<<"Royal";
//else
straight_flush();
}
 
void straight_flush()
{
//if (y==1)
offile<<"Straight";
}
Добавлено через 1 минуту
Не забывайте только что по умолчанию ofstream не перезаписывает файл так что до запуска вашей программы у вас не должно быть файла text.txt.
Спасибо. Я по-моему понял где я проехал. Судя по всему я написал offile.open("text.txt"); и в функции main, и в другой, и сам этого не заметил. Завтра схожу в универ, скопирую код, и проверю...

Но если нет, это может быть как-то связано с библиотеками, или с ограничением записи на диск С (программа сохранялась на D)?
0
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
23.02.2012, 19:34 #4
Цитата Сообщение от sPYfromFranik Посмотреть сообщение
Судя по всему я написал offile.open("text.txt"); и в функции main, и в другой, и сам этого не заметил.
Возможно, ведь после первого открытия файла он блокируется и второй раз для редактирования не откроется.
Советую после открытия файла проводить проверку
C++
1
2
if(!file)
 cerr<<"Error, can't open file";
1
sPYfromFranik
0 / 0 / 0
Регистрация: 06.12.2011
Сообщений: 4
23.02.2012, 19:35  [ТС] #5
Цитата Сообщение от Gepar Посмотреть сообщение
Возможно, ведь после первого открытия файла он блокируется и второй раз для редактирования не откроется.
Советую после открытия файла проводить проверку
C++
1
2
if(!file)
 cerr<<"Error, can't open file";
Спасибо, возьму на заметку
0
23.02.2012, 19:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.02.2012, 19:35
Привет! Вот еще темы с ответами:

Как создать проект для ввода и вывода данных из одного файла? - C++
Доброго всем дня! Учу сейчас ввод/вывод данных. Подскажите , пожалуйста, чтобы осуществить ввод в файл/вывод данных с этого же файла, ...

Шаблон, вложенный в него класс и оператор вывода - C++
Добрый день, делаю учебное задание. надо сделать шаблон стека с использованием односвязного списка. Сделал вот такую функцию: ...

Для чего нужен возвращаемый тип в перегрузке ввода >> и почему без него него выдаётся ошибка? - C++
Для чего нужен возвращаемый тип в перегрузке ввода &gt;&gt;, какую роль он выполняет что без него него выдаётся ошибка. cin объект istream...

Перегрузка оператора вывода в С++ (для вывода данных вектора) - C++
Как правильно перегрузить оператор вывода для вектора чтобы он выводил все данные из вектора ? Для этого класса есил можно помогите. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru