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

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

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

Открывается текстовый файл но не записывается - C++

22.03.2018, 01:13. Просмотров 293. Ответов 25

Использую опенжл, параллельно, по нажатию кнопки, надо создавать разные текстовые файлы и записывать в них информацию, но по нажатию кнопки файл создается и закрывается пустой. При том если выносить создание и запись в мейн, что естественно меня не устраивает, файл создается и записывается корректно.
MAIN:
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
#include <GL/glut.h>
#include <iostream>
#include <time.h>
#include "windows.h"
#include<fstream>
#include"button.h"
 
using namespace std;
 
int w = 640; //Задание ширины окна
int h = 480; //Задание высоты окна
bool picture[400][400]; //Массив для ввода
bool checkPicture [10][10]; //Преобразованный массив для ввода
string title = " "; //Шапка программы
 
 
//Стандартные функции рисования
/*  glRectf(x,y,x1,y1);
    glColor3f(r,g,b)
    glBegin(GL_LINES);
    glVertex2f(x,y)
*/
 
button Education;button Clear;button Record;
 
void clearMass()
{
    int i;
    int k;
    for(i = 0; i <400;i++)
    {
        for(k = 0; k<400;k++)
        {
            picture[i][k]=false;
        }
    }
    for(i = 0; i <10;i++)
    {
        for(k = 0; k<10;k++)
        {
            checkPicture[i][k]=false;
        }
    }
}
 
 
int booltoint(bool a)
{
    int retur;
    if (a==false) retur = 0;
    else retur = 1;
    return retur;
}
 
string inttohex(int a)
{
    string tmp("");
    do
    {
        int r(a%16);
        if (r>9) {r+=(int)'A'-10;}
        else  {r+=(int)'0';};
        tmp=(char)r+tmp;
        a/=16;
    } while (a);
    return tmp;
}
 
string inttostr(int a)
{
    char numb[11] = "0123456789";
    int counter = 1;
    int field[9];
    char retur[10] = "         ";
    for(int i = 0; i <9; i++)
    {
        if((a/10)>0)
        {
            field[i] = a;
            a = a/10;
            counter +=1;
        }
        else  {field[i] = a%10; break;}
    }
    int j ;
    j = field[counter - 1];
    retur[0] = numb[j];
    for(int k =1; k < counter;k++)
    {
    j = field[counter-(k+1)] - field[counter-k]*10;
    retur[k] = numb[j];
    }
    return retur;
}
 
void recordMass(int symbol)
{
    //string adress =("C:\\Users\\kvos\\Desktop\\C++\\neironet1\\data\\"+inttohex(symbol)+".txt");
    string adress =  (inttostr(123)+".txt");
    ofstream file(adress.c_str(), ios::binary);
    string kek = inttostr(1);
    glutSetWindowTitle((inttostr(321).c_str()));
    Sleep(500);
    for(int i = 0; i < 10; i++)
    {
        for(int k = 0; k< 10; k++)
        {
            //mass << (inttostr(booltoint(checkPicture[i][k])));
            file << kek;
            //glutSetWindowTitle((inttostr(booltoint(checkPicture[i][k]))).c_str());
            //Sleep(50);
        }
    }
    file.close();
    glutSetWindowTitle((inttostr(123).c_str()));
}
 
 
 
void MousePressed(int button, int state, int x, int y)
{
    Education.check(x,y);
    Clear.check(x,y);
    if(((x>=Clear.returnX())&&(x<=Clear.returnX1()))&&((y>=Clear.returnY())&&(y<=Clear.returnY1())))
    {
        clearMass();
        Clear.check(x,y);
    }
    Record.check(x,y);
    if(((x>=Record.returnX())&&(x<=Record.returnX1()))&&((y>=Record.returnY())&&(y<=Record.returnY1())))
    {
        recordMass('#');
        Record.check(x,y);
    }
}
 
void input(int x , int y)
{
    picture[x][y] = true;
    for(int i = 0; i < 10; i++)
    {
        for(int k = 0; k < 10; k++)
        {
            for(int j = i*40; j < 40 * (i+1); j++)
            {
                for(int l = k*40; l < 40*(k+1); l++)
                {
                    if(picture[j][l]==true)checkPicture[i][k] = true;
                }
            }
        }
    }
 
}
 
 
void drawPicture()
{
    for(int i = 0; i < 400;i++)
    {
        for(int k = 0; k < 400; k++)
        {
            if(picture[i][k]==true)
            {
                //title = title + inttostr(i) + inttostr(k);
                glColor3f(1.0,0.0,0.0);
                glBegin(GL_POINTS);
                glVertex2f(i,480 -k);
                glEnd();
        }}
    }
    for(int q = 0; q < 10;q++)
    {
        for(int e = 0; e < 10; e++)
        {
            if(checkPicture[q][e]==true)
            {
                glColor3f(0.0,0.0,0.0);
                //glBegin(GL_POINTS);
                int x = (450 + 10 * (q+1));
                int y =( h- (80 + 10*(e+1)));
                glRectf(x,y,x+20,y+20);
                //glEnd();
        }}
    }
}
 
void MousePressedMove(int ax, int ay)
{
    if((ax<400)&(ay<400))input(ax,ay);
   //title = inttostr(ax) + inttostr(ay);
}
 
void markup()
{
    glColor3f(0.0,1.0,0.0);
    glBegin(GL_LINES);
    glVertex2f(400,h);glVertex2f(400,0);
    glVertex2f(0,h-400);glVertex2f(400,h-400);
    glVertex2f(400,240);glVertex2f(w,240);
    glEnd();
}
 
 
 
void display() //Функция отрисовки экрана
{
    glClear(GL_COLOR_BUFFER_BIT); //Очистка экрана
    glClearColor(1.0,1.0,1.0,1.0);
    //int a = '#';
    markup();
    Education.draw();
    Clear.draw();
    Record.draw();
    drawPicture();
    //title = " ";
    glFlush(); //Вывод на экран
}
 
void timer(int = 0) //Функция таймера
{
 
    display(); //Вызов отрисовка экрана
    glutTimerFunc(10,timer,0);
}
 
 
 
int main(int argc, char **argv) //Главная функция
{
    for(int i = 0; i < 400;i++)
    {
        for(int k = 0; k < 400; k++)
            picture[i][k] = false;
    }
    for(int i = 0; i < 400;i++)
    {
        for(int k = 0; k < 400; k++)
        {
            checkPicture[i][k] = false;
        }
    }
    Education.newButton(10,410,70,470);
    Clear.newButton(80,410,140,470);
    Record.newButton(150,410,210,470);
    { //СИСТЕМНЫЕ ФУНКЦИИ
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInitWindowSize(w, h);
    glutCreateWindow("Neironet");
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluOrtho2D(0, w, 0, h);
    glutDisplayFunc(display);
    glClearColor(1.0,1.0,1.0,1.0);
    glutMotionFunc(MousePressedMove);
    glutMouseFunc(MousePressed);
    glutTimerFunc(10,timer,0);
    glutMainLoop();
    }
}
class button:
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include "button.h"
#include <GL/glut.h>
 
using namespace std;
 
void button::newButton(int xd,int yd,int x1d,int y1d)
        {
            x = xd;
            y = yd;
            x1 = x1d;
            y1 = y1d;
            status = false;
            change = false;
        }
void button::draw()
        {
            if (status == false) glColor3f(0.0,1.0,0.0);
            else glColor3f(1.0,0.0,0.0);
            glRectf(x,480-y,x1,480-y1);
        }
        void button::check(int xd, int yd)
        {
            if(((xd>=x)&&(xd<=x1))&&((yd>=y)&&(yd<=y1)))
            {
                if(change == false)
                {
                if(status==false)status=true;
                else status = false;
                change = true;
                }
                else change = false;
            }
 
        }
        bool button::returnStatus()
        {
            return status;
        }
        int button::returnX()
        {
            return x;
        }
        int button::returnY()
        {
            return y;
        }
        int button::returnX1()
        {
            return x1;
        }
        int button::returnY1()
        {
            return y1;
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2018, 01:13
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Открывается текстовый файл но не записывается (C++):

Не открывается текстовый файл для чтения (использовал fstream.h) - C++
#include &lt;fstream&gt; #include &lt;string&gt; #include &lt;conio.h&gt; #include &lt;iostream&gt; using namespace std; void main() { ifstream...

Дан текстовый файл, содержащий целые числа. Определить в каждой четной строке максимальное число и записать результаты в новый текстовый файл - C++
Дан текстовый файл, содержащий целые числа. Определить в каждой четной строке максимальное число и записать результаты в новый текстовый...

Текстовый файл UTF-8 сохранить как текстовый файл ANSI - C++
Есть текстовый файл в UTF-8 Нужно рядом сохранить его же, но в ANSI Как сделать это средствами c++? Среда Visual Studio 2010 ...

Дано число k (< 10) и текстовый файл, содержащий более k строк. Создать новый текстовый файл, содержащий k последних строк исходного файла - C++
Дано число k (&lt; 10) и текстовый файл, содержащий более k строк. Создать новый текстовый файл, содержащий k последних строк исходного...

Записывается мусор в файл - C++
Здравствуйте, есть следующий код для вывода дефолтных значений в файл: #include &lt;iostream&gt; #include &lt;fstream&gt; using namespace...

Структура не записывается в файл - C++
Всем привет. Пытаюсь, значит, организовать работу с файлом в C++. Надо записать в smallfile.dat небольшую структуру, содержащую в себе поля...

25
nd2
2821 / 2391 / 851
Регистрация: 29.01.2016
Сообщений: 8,004
22.03.2018, 01:33 #2
Цитата Сообщение от SergeyZabolotni Посмотреть сообщение
но по нажатию кнопки файл создается и закрывается пустой.
Точку останова поставь и посмотри: доходит ли код до записи в файл.
0
SergeyZabolotni
0 / 0 / 0
Регистрация: 22.03.2018
Сообщений: 13
22.03.2018, 01:34  [ТС] #3
Заголовок менял, доходит
0
nd2
2821 / 2391 / 851
Регистрация: 29.01.2016
Сообщений: 8,004
22.03.2018, 01:35 #4
Цитата Сообщение от SergeyZabolotni Посмотреть сообщение
Заголовок менял, доходит
Переведи, о чём это?
0
SergeyZabolotni
0 / 0 / 0
Регистрация: 22.03.2018
Сообщений: 13
22.03.2018, 01:37  [ТС] #5
Ставил функцию изменения заголовка программы с задержкой и при создании, и при записи, и при закрытии - везде проходит
0
nd2
2821 / 2391 / 851
Регистрация: 29.01.2016
Сообщений: 8,004
22.03.2018, 01:39 #6
Цитата Сообщение от SergeyZabolotni Посмотреть сообщение
Ставил функцию изменения заголовка программы с задержкой и при создании, и при записи, и при закрытии - везде проходит
Я не пойму, о чём ты говоришь. Вот это сделай:
Цитата Сообщение от nd2 Посмотреть сообщение
Точку останова поставь и посмотри: доходит ли код до записи в файл.
Точку останова в recordMass(). Отладчиком, надеюсь, умеешь пользоваться?
0
SergeyZabolotni
0 / 0 / 0
Регистрация: 22.03.2018
Сообщений: 13
22.03.2018, 01:48  [ТС] #7
Доходит
0
nd2
2821 / 2391 / 851
Регистрация: 29.01.2016
Сообщений: 8,004
22.03.2018, 01:52 #8
Цитата Сообщение от SergeyZabolotni Посмотреть сообщение
Доходит
Вот до этой строки?
C++
1
file << kek;
Какое там значение kek?
0
SergeyZabolotni
0 / 0 / 0
Регистрация: 22.03.2018
Сообщений: 13
22.03.2018, 02:03  [ТС] #9
"1"
0
nd2
2821 / 2391 / 851
Регистрация: 29.01.2016
Сообщений: 8,004
22.03.2018, 02:05 #10
В каком месте создаётся пустой файл?
0
SergeyZabolotni
0 / 0 / 0
Регистрация: 22.03.2018
Сообщений: 13
22.03.2018, 02:06  [ТС] #11
В корневой папке проекта
0
nd2
2821 / 2391 / 851
Регистрация: 29.01.2016
Сообщений: 8,004
22.03.2018, 02:18 #12
И по времени создания ты видишь, что это тот файл, который создаётся при нажатии на кнопку?

Добавлено через 8 минут
"button.h" покажи.
0
SergeyZabolotni
0 / 0 / 0
Регистрация: 22.03.2018
Сообщений: 13
22.03.2018, 02:19  [ТС] #13
Да,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class button
{
private:
        int x,y,x1,y1;
        bool status, change;
public:
        void newButton(int xd,int yd,int x1d,int y1d);
        void draw();
        void check(int xd, int yd);
        bool returnStatus();
        int returnX();
        int returnY();
        int returnX1();
        int returnY1();
};
0
nd2
2821 / 2391 / 851
Регистрация: 29.01.2016
Сообщений: 8,004
22.03.2018, 02:55 #14
У меня, твой код, работает. Запись в файл происходит. Это всё, что я могу тебе сказать.

Добавлено через 25 минут
Среда какая?
0
SergeyZabolotni
0 / 0 / 0
Регистрация: 22.03.2018
Сообщений: 13
22.03.2018, 12:15  [ТС] #15
Codeblocks mingw
0
22.03.2018, 12:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.03.2018, 12:15
Привет! Вот еще темы с ответами:

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

В файл записывается мусор - C++
Добрый вечер! Почему при записи в бинарный файл, в файл записывается мусор и соответственно читается из него тоже мусор? #define...

Результат не записывается в файл - C++
Здравствуйте. Столкнулся с такой проблемой: после выполнения цикла (условия), результат не записывается в файл. int main() { ...

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


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

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

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