尝试从 dev c++ mingw 4.8.1 中的文件读取时收到分段错误
Receiving segmentation fault when trying to read from file in dev c++ mingw 4.8.1
我正在尝试从文件中读取字符,但是当我在 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,文件已打开。但是没有从文件中读取任何字符。
Debug information
为什么会这样?
根据您对我评论的回答,声明 bool read
覆盖了 fread
使用的 read
函数。
重命名它或将其移动到另一个命名空间或 class.
None 我的编译器可以重现同样的问题。这是非常奇怪的行为,因为至少 'read' 的声明应该与正确覆盖的原始声明相同。也许您的 stdlib 正在以不同的方式调用 read。
我正在尝试从文件中读取字符,但是当我在 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,文件已打开。但是没有从文件中读取任何字符。 Debug information
为什么会这样?
根据您对我评论的回答,声明 bool read
覆盖了 fread
使用的 read
函数。
重命名它或将其移动到另一个命名空间或 class.
None 我的编译器可以重现同样的问题。这是非常奇怪的行为,因为至少 'read' 的声明应该与正确覆盖的原始声明相同。也许您的 stdlib 正在以不同的方式调用 read。