Si quieres poner tres elementos en una estructura ésta debe tener al menos tres variables. No hay algo cómo estructuras dinámicas en C.
Si quieres una de tres elementos hay que declarar ese tipo.
Lo que si se pueden definir menos elementos de los que tiene la estructura, en ese caso C pone los no seleccionados a 0.
#include <stdio.h>
typedef struct {
int a;
int b;
int c;
} estructura;
void print(char *s, estructura t) {
"t.a = %d\n"
"t.b = %d\n"
"t.c = %d\n\n", s, t.a, t.b, t.c);
}
int main() {
// defino solo los elementos que me interesan
estructura m = {a: 1, c: 2};
// defino de los primeros elementos de forma secuencial
estructura n = {3, 4};
// defino todos los elementos
estructura o = {5, 6, 7};
print("m", m);
print("n", n);
print("o", o);
}
Salida:
estructura m:
t.a = 1
t.b = 0
t.c = 2
estructura n:
t.a = 3
t.b = 4
t.c = 0
estructura o:
t.a = 5
t.b = 6
t.c = 7