windows - Segmenteringsfejl ved indlæsning af data i en struct array C

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg får en segmenteringsfejl, når jeg forsøger at læse en værdi fra filen og indlæse dataene i strukturvektoren. Linjen med den første forekomst af segmenteringsfejl er angivet i koden. Jeg kører den på en Windows maskine. Jeg vil sætte pris på enhver hjælp.


#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
");
    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;
}

Bedste reference


Fejlen opstod fordi n\_boxes var uninitialized. Jeg læste n\_boxes uden for sløjfen og kaldte malloc-funktionen efter at have læst n\_boxes som angivet i kommentarafsnittet.