当我尝试从文件中读取值并将数据加载到struct vector中时,我遇到了分段错误。第一次出现分段错误的行在代码中指示。我在Windows机器上运行它。我将不胜感激任何帮助。
#include <stdio.h>
#include <stdlib.h>
typedef struct box
{
int height, width, depth, value, rotation;
} Box;
int main(int argc, char *argv[] )
{
FILE *in;
int i=0;
int j=0;
int k=0;
int l=0;
int value;
int n_boxes;
int max_height;
Box *boxes = (Box*) malloc(sizeof(Box)*2*n_boxes);
in = fopen("stk10.data", "r");
if(in == NULL)
printf("Couldn't open the file\n");
else
{
while( (fscanf(in, "%d", &value))!=EOF )
{
if(i==0)
n_boxes= value;
if(i==1)
max_height = value;
if(i>=2 && i<n_boxes+2)
{
boxes[j].value = value; //segmentation fault here
j++;
}
if(i>=n_boxes+2)
{
if(k%3==0)
boxes[l].width = value;
if(k%3==1)
boxes[l].height = value;
if(k%3==2)
boxes[l].depth = value;
boxes[l].rotation = 1;
k++;
if(k%3==0)
l++;
}
i++;
}
}
free(boxes);
return 0;
}
答案 0 :(得分:0)
发生错误是因为n_box未初始化。我在循环外读取n_box并在读取n_boxes后调用malloc函数,如注释部分所示。