gpt4 book ai didi

c++ - 处理文件时出现奇怪的段错误

转载 作者:太空宇宙 更新时间:2023-11-04 15:07:31 25 4
gpt4 key购买 nike

我正在尝试解析一个文件,但遇到了一个奇怪的段错误。这是我正在使用的代码:

#include <iostream>

using namespace std;

int main ()
{
FILE *the_file;
the_file = fopen("the_file.txt","r");

if (the_file == NULL)
{
cout << "Error opening file.\n";
return 1;
}

int position = 0;
while (!feof(the_file))
{
unsigned char *byte1;
unsigned char *byte2;
unsigned char *byte3;
int current_position = position;

fread(byte1, 1, 1, the_file);
}
}

我用命令编译它

g++ -Wall -o parse_file parse_file.cpp

如果我在 while 循环中删除声明 current_position 的行,代码将毫无问题地运行。我还可以将该声明移到 unsigned char 指针的声明之上,代码将毫无问题地运行。为什么它会在声明中出现错误?

最佳答案

byte1 是一个未初始化的指针;您需要分配一些存储空间。

unsigned char *byte1 = malloc(sizeof(*byte1));

fread(&byte1, 1, 1, the_file);

...

free(byte1);

或者更好的是,根本不使用指针:

unsigned char byte1;

fread(&byte1, 1, 1, the_file);

关于c++ - 处理文件时出现奇怪的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10405661/

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