0 / 0 / 0
Регистрация: 22.12.2016
Сообщений: 69
1

Fstream крашит

07.04.2018, 17:50. Показов 833. Ответов 14
Метки нет (Все метки)

Пытаюсь сохранить работу проги, но файл никак не хочет открывается/создаваться. Каждый раз "Вызвано исключение по адресу..." во время выполнения этой строки std::ifstream file1("out.txt");.
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
#include<iostream>
#include"maprw.h"
#include<fstream>
 
int main()
{
    std::wifstream file("1.osu");
    if (!file.is_open()) 
        printf("Can't open file!\n");
// 
    map *M = (map*)malloc(sizeof(map) * 2000);
    int key_mode = 0;
    int count = 0;
    read_map(file, M, &key_mode, &count); 
    printf("key mod = %d", key_mode);
    osumap Osu(M, key_mode, count);
    Osu.create_more_dif();
    Osu.normal_map();
    file.close();
//
    std::ofstream file1("out.txt"); // проблемная строка, на ней остановка происходит 
    if (!file1.is_open()) //очевидно, до этого выполнение не доходит 
        printf("\nCan't open file\n");
    for (int j = 0; j < Osu.key_count-1; j++)
    {
        
    }
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.04.2018, 17:50
Ответы с готовыми решениями:

Крашит из-за кривого условия, как залатать
Есть простая функция для заполнения двух массивов. Как заполнять -- дано по условию, точнее дано по...

Использование указателя AP в main.cpp крашит приложение
System.h class System {...}; static LRESULT CALLBACK MainWndProc(HWND hwnd, UINT msg, WPARAM...

Как удалять переменные из памяти, крашит сервер?
У меня есть сервер и через час он перенагружается данными, я так думаю и консоль не отвечает... Это...

Почему крашит простейший код работы с динамическим массивом?
#include&lt;iostream&gt; using namespace std; int main() { char*arr = new char(); arr =...

14
nd2
3431 / 2810 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
07.04.2018, 18:58 2
Цитата Сообщение от DrIndustrial Посмотреть сообщение
// проблемная строка, на ней остановка происходит
Откуда видишь, что именно на ней? При пошаговой отладке?
0
0 / 0 / 0
Регистрация: 22.12.2016
Сообщений: 69
07.04.2018, 20:10  [ТС] 3
Цитата Сообщение от nd2 Посмотреть сообщение
Откуда видишь, что именно на ней? При пошаговой отладке?
да, при ней самой. А если точнее и будет вообще полезна эта инфа, то вот
C++
1
2
3
4
5
6
7
8
9
10
_Myt *close()
        {   // close the C stream
        _Myt *_Ans = this;
        if (_Myfile == 0)
            _Ans = 0;
        else
            {   // put any homing sequence and close file
            if (!_Endwrite())//тут 
                _Ans = 0;// или тут остановка происходит чаще всего
            if (fclose(_Myfile) != 0)//или тут
это отрывок из fstream
0
5224 / 3196 / 362
Регистрация: 12.12.2009
Сообщений: 8,101
Записей в блоге: 2
07.04.2018, 20:15 4
Цитата Сообщение от DrIndustrial Посмотреть сообщение
if (!file.is_open())
* * * * printf("Can't open file!\n");
файл не смогли открыть, но нам пофиг, мы ж сильные, все равно его читаем
0
0 / 0 / 0
Регистрация: 22.12.2016
Сообщений: 69
07.04.2018, 20:29  [ТС] 5
Цитата Сообщение от Kastaneda Посмотреть сообщение
файл не смогли открыть, но нам пофиг, мы ж сильные, все равно его читаем
в законченном виде такого конечно не будет. Там еще много, того что я не дописал.
0
nd2
3431 / 2810 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
07.04.2018, 20:52 6
Цитата Сообщение от DrIndustrial Посмотреть сообщение
да, при ней самой.
В этой строке нечему крашиться. Ты пошаговую отладку случайно не в Release делаешь (если делаешь)?
0
5224 / 3196 / 362
Регистрация: 12.12.2009
Сообщений: 8,101
Записей в блоге: 2
07.04.2018, 21:02 7
Цитата Сообщение от DrIndustrial Посмотреть сообщение
Там еще много, того что я не дописал.
Поэтому Вы, господа форумчане, поднапрягите свое воображение и попытайтесь представить, что я там такого не дописал, что приводит к крешу.
0
0 / 0 / 0
Регистрация: 22.12.2016
Сообщений: 69
07.04.2018, 21:20  [ТС] 8
Цитата Сообщение от nd2 Посмотреть сообщение
В этой строке нечему крашиться. Ты пошаговую отладку случайно не в Release делаешь (если делаешь)?
Debug
0
nd2
3431 / 2810 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
07.04.2018, 21:23 9
Цитата Сообщение от DrIndustrial Посмотреть сообщение
Debug
...
Цитата Сообщение от nd2 Посмотреть сообщение
В этой строке нечему крашиться.
0
0 / 0 / 0
Регистрация: 22.12.2016
Сообщений: 69
07.04.2018, 21:33  [ТС] 10
Цитата Сообщение от Kastaneda Посмотреть сообщение
Поэтому Вы, господа форумчане, поднапрягите свое воображение и попытайтесь представить, что я там такого не дописал, что приводит к крешу.
воображение тут не поможет, ибо как работает внутри fstream я не знаю. А те преобразования над массивами ,что я не дописал точно никак не повлияют на текущую проблему.
0
nd2
3431 / 2810 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
07.04.2018, 21:38 11
Цитата Сообщение от DrIndustrial Посмотреть сообщение
во время выполнения этой строки std::ifstream file1("out.txt");
Цитата Сообщение от DrIndustrial Посмотреть сообщение
как работает внутри ifstream я не знаю
При чём здесь, вообще, ifstream? В той строке, на которую ты указываешь, ofstream. Для ifstream - совсем другая история.
0
0 / 0 / 0
Регистрация: 22.12.2016
Сообщений: 69
07.04.2018, 21:53  [ТС] 12
Цитата Сообщение от nd2 Посмотреть сообщение
При чём здесь, вообще, ifstream? В той строке, на которую ты указываешь, ofstream. Для ifstream - совсем другая история.
у меня было ofstream, крашилось поменял на i, ничего не изменилось, вернул обратно o. Просто перепутал когда писал сообщение, в коде все равно o.
0
nd2
3431 / 2810 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
07.04.2018, 22:04 13
Вот так сделай:
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
int main()
{
   /* std::wifstream file("1.osu");
    if (!file.is_open()) 
        printf("Can't open file!\n"); 
   
    map *M = (map*)malloc(sizeof(map) * 2000);
    int key_mode = 0;
    int count = 0;
    read_map(file, M, &key_mode, &count); 
    printf("key mod = %d", key_mode);
    osumap Osu(M, key_mode, count);
    Osu.create_more_dif();
    Osu.normal_map();
    file.close();*/
 
    std::ofstream file1("out.txt"); 
    if (!file1)
    {
        std::cout << "\nCan't open file\n" << std::endl;
        system("pause");
        return 0;
    }
    else
        std::cout << "Done!" << std::endl;
    /*for (int j = 0; j < Osu.key_count-1; j++)
    {
        
    }*/
    system("pause");
    return 0;
}
1
0 / 0 / 0
Регистрация: 22.12.2016
Сообщений: 69
08.04.2018, 09:05  [ТС] 14
Цитата Сообщение от nd2 Посмотреть сообщение
Вот так сделай:
таким образом нашел строчку проблемную, у меня один из массивов выходил за пределы и скорее всего изменял file, который потом некорректно закрывался.
0
nd2
3431 / 2810 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
08.04.2018, 15:46 15
Цитата Сообщение от DrIndustrial Посмотреть сообщение
таким образом нашел строчку проблемную
С чём тебя и поздравляю, сказочник...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.04.2018, 15:46
Помогаю со студенческими работами здесь

Пишу консольную змейку, крашит при увеличении размера
Появилось желание сделать свою игру на С++, так как нужно начинать с простого, решил сделать...

Как можно определить из-за чего крашит длл которая внедрена в игру?
Как можно определить из за чего крашит длл которая внедрена в игру крашит не сразу бывает долго не...

Sos! Записать класс Stack в файл, "крашит"
Ребятки!! Помогайте! Не могу разобраться с записью\чтением в файл(методы Read и Write)...По коду...

fstream
Дан текстовый файл. Осуществить посимвольную чередующуюся печать файла в прямом и обратном...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru