Ошибка получения сегментации при попытке чтения из файла в dev c ++ mingw 4.8.1 - PullRequest
1 голос
/ 02 ноября 2019

Я пытаюсь прочитать символы из файла, но я получаю ошибку сегментации, когда у меня есть переменные, объявленные вне main. Если я удаляю их и пытаюсь прочитать из файла, все работает гладко. Я использую dev c ++ 5.7.1 с переносной версией mingw 4.8.1.

Я выделил проблему только объявлением нескольких переменных и кода чтения файла. Этот фрагмент кода взят из более крупного приложения, которое я пытаюсь разработать (я сам изучаю разработку игр).

#include <iostream>    
#include <fstream>    
bool running = true;  
bool musicPlaying = true;  
bool read = false;  
int levelNumber;  
int barWidth = 40;  
int barHeight = 10;  
float timeElapsed;  

int main(int argc, char** argv) {    
    std::ifstream file;
    file.open("test.txt");
    std::cout<<file.is_open()<<std::endl;
    char c;
    while(!file.eof()){  
        file.get(c);  
        std::cout<<c;  
    }  
    return 0;  
}

Я получаю вывод: 1, файл открыт. Но ни один символ не читается из файла. Отладочная информация

Почему это происходит?

1 Ответ

1 голос
/ 04 ноября 2019

Согласно вашему ответу на мой комментарий, объявление bool read переопределяет read функцию, которая используется fread. Либо переименуйте его, либо переместите в другое пространство имен или класс.

Ни один из моих компиляторов не мог воспроизвести ту же проблему. И это очень странное поведение, потому что по крайней мере объявление 'read' должно быть таким же, как и оригинальное для правильного переопределения. Возможно, ваш stdlib вызывает чтение прочитанным по-другому.

...