lundi 4 décembre 2017

Why do I keep losing the values of my struct members?

apologies if this is some stupid mistake I've made, I'm just a rookie.

First off, I have created a struct;

struct StarsStruct
{
    int SerialNumber;
    char StarName[10];
    double x;
    double y;
};

Then, I've created an array of struct pointers using; (NumberOfStars is just an int variable) This was declared and initialised at the top of the program, before any if statements.

struct StarsStruct *Stars = malloc(sizeof(struct StarsStruct) * NumberOfStars);

And I have done a for loop to change the values of the members, in my struct array;

for (int i = 0; i < NumberOfStars; i++)
        {
            r1 = rand() % (60 + 1 - 0) + 0;
            r2 = rand() % (30 + 1 - 0) + 0;


            Stars[i].SerialNumber = i;
            Stars[i].x = r1;
            Stars[i].y = r2;
            Plot(r1, r2, '.');
        }

However, when I go to my second IF statement, for some reason these values are completely erased;

full part of the code;

if (strcmp(CurrentCommand, "bang") == 0)
    {
        Clear();
        printf("Enter the number of stars to be created: ");
        scanf("%d", &NumberOfStars);

        //Stars = malloc(sizeof(struct StarsStruct) * NumberOfStars);

        for (int i = 0; i < NumberOfStars; i++)
        {
            r1 = rand() % (60 + 1 - 0) + 0;
            r2 = rand() % (30 + 1 - 0) + 0;


            Stars[i].SerialNumber = i;
            Stars[i].x = r1;
            Stars[i].y = r2;
            Plot(r1, r2, '.');
        }

    }


    else if (strcmp(CurrentCommand, "list") == 0)
    {
        Stars[0].SerialNumber;
        Stars[1].y;
        Stars[2].SerialNumber;
        Stars[3].SerialNumber;
        Stars[4].x;
        Stars[5].y;
        for (int i = 0; i < NumberOfStars; i++)
        {

            printf("%d", Stars[0].SerialNumber);

        }
    }

FIRST IF STATEMENT

SECOND IF STATEMENT

Aucun commentaire:

Enregistrer un commentaire