Ok so I’m sure there’s a simple fix that I’m missing, but right now my code is causing a segment fault on the line “A[i]->key = 0;.” The Record* Item part is a necessity for the program, so I need to make it work this way for an assignment I’m working on, however if I do change it so that Item becomes a non-pointer typedef of Record, then I can use A[i].key no problem. I just need a nudge in the right direction so that I can make standInput correctly assign values to an array of pointers to records. Thanks!
Item.h:
#include "stdio.h"
#include "stdlib.h"
typedef int keyType;
struct Record
{
keyType key;
int other;
};
typedef struct Record* Item;
void standInput(Item *A, int n)
{
int i, input;
for(i = 0; i <= n-1; i++)
{
A[i]->key = 0;
printf("%d ", A[i]->key);
}
}
Main:
#include "stdio.h"
#include "stdlib.h"
#include "Item.h"
int main()
{
int n;
Item *A;
printf("Enter a length for the array: ");
scanf("%d", &n);
A = (Item*)malloc(n * sizeof(Item));
standInput(A, n);
return 0;
}
The values in
Aare all uninitialized, but you’re using them asstruct Recordpointers anyway. If you want to haveAcontinue holding pointers (rather than the structs directly), then you need to allocate space forAand for each item pointed to byA.