Array of structs in C
arrays, c, struct
Solution
This is how it is usually done:
size_t n = <number of elements needed>
stats_t *ptr = malloc (n * sizeof (stats_t));
Then, to fill it in,
for (size_t j = 0; j < n; ++j)
{
ptr [j] .hours = whatever
ptr [j] .days = whatever
...
}
Problem
I'm trying to create an array of structs and also a pointer to that array. I don't know how large the array is going to be, so it should be dynamic. My struct would look something like this: ``` typedef struct _stats_t { int hours[24]; int numPostsInHour; int days[7]; int numPostsInDay; int weeks[20]; int numPostsInWeek; int totNumLinesInPosts; int numPostsAnalyzed; } stats_t; ``` ... and I need to have multiple of these structs for each file (unknown amount) that I will analyze. I'm not sure how to do this. I don't like the following approach because of the limit of the size of the array: ``` # define MAX 10 typedef struct _stats_t { int hours[24]; int numPostsInHour; int days[7]; int numPostsInDay; int weeks[20]; int numPostsInWeek; int totNumLinesInPosts; int numPostsAnalyzed; } stats_t[MAX]; ``` So how would I create this array? Also, would a pointer to this array would look something this? ``` stats_t stats[]; stats_t *statsPtr = &stats[0]; ```