Вы мало что сказали о платформе, для которой разрабатываете. Если ваш компилятор совместим с C99, вы можете инициализировать саму struct
именованными инициализаторами следующим образом
char *fullname0 = ...
char *phone = ...
.
struct x a[] = {
[0] = { .fname = fullname0, .phn = phone }
[1] = { .fname = fullname1, .phn = phone }
};
Если при этом все очень похоже, то лучше всего написать макрос для инициализации каждого отдельного struct
.
#define X_INITIALIZER(NAME, PHONE) { .fname = NAME, .phn = PHONE }