gpt4 book ai didi

c++ - 倒带导致段错误

转载 作者:搜寻专家 更新时间:2023-10-30 23:59:40 24 4
gpt4 key购买 nike

当我的程序出现段错误时,我一直在尝试进行一些调试。我已经追踪到调用 rewind 的地方。

创建 ISBNPrefix 对象时打开文件

ISBNPrefix::ISBNPrefix(const char* filename) 
{

file = fopen( filename, "r" );

}

文件是 ISBNPrefix 类的成员:

class ISBNPrefix {
FILE* file;
public:
ISBNPrefix(const char* filename);
bool isRegistered(int area) const;
int minNoDigits(int area) const;
bool isRegistered(int area, const char* publisher) const;
~ISBNPrefix();
};

创建 ISBNPrefix 对象的行是:

ISBNPrefix prefixList("prefixRanges.txt");

prefixRanges.txt是我目录下的文件名

现在我在这个部分发生了段错误:

//-------------------------------
cout << "MADE IT 1" << endl;
//-------------------------------
rewind( file );
//-------------------------------
cout << "MADE IT 2" << endl;
//-------------------------------

哪些输出:

MADE IT 1
Segmentation fault

解构器:

ISBNPrefix::~ISBNPrefix()
{
if( file != NULL )
{
fclose(file);
}
}

是唯一关闭文件的地方

编辑:经过一些故障排除后,没有找到解决方案,建议我发布所有内容。由于我的声誉很低,而且我不能发布超过 2 个链接,所以 pastebin 链接在评论部分。

最佳答案

if(file != NULL)
cout << "ITS NOT NULL";
rewind( file );

应该是

if(file != NULL)
{
cout << "ITS NOT NULL";
rewind( file );
}

在第一个版本中,只有 ourput 语句是有条件的,无论您将以下行缩进多少......

我想即使对于单个语句 block 也始终包含方括号 ({}) 是一个好习惯,以避免像这样简单的事情。此外,正确格式化您的代码,并确保缩进遵循实际代码结构。例如:

if(file != NULL)
cout << "ITS NOT NULL";
rewind( file ); // it would have been more obvious this way

关于c++ - 倒带导致段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15454132/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com