Там нет никакого способа, вы можете напечатать все структурные элементы с одной printf
заявления. В C вы должны распечатать их все вручную. Вот пример создания двух членов структуры и их печати:
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
typedef struct {
char *name;
int thread_id;
bool is_valid;
}T_THREAD;
int
main(void) {
T_THREAD T1 = {"T1", 123, 1};
T_THREAD T2 = {"T2", 456, 0};
printf("\nContents of a structure %s are:\n", T1.name);
printf("thread_id: %d\n",T1.thread_id);
printf("is_valid: %d\n", T1.is_valid);
printf("\nContents of a structure %s are:\n", T2.name);
printf("thread_id: %d\n",T2.thread_id);
printf("is_valid: %d\n", T2.is_valid);
return 0;
}
Выход:
Contents of a structure T1 are:
thread_id: 123
is_valid: 1
Contents of a structure T2 are:
thread_id: 456
is_valid: 0
В качестве альтернативы, вы можете создать функцию, чтобы сделать это также:
int
main(void) {
T_THREAD T1 = {"T1", 123, 1};
T_THREAD T2 = {"T2", 456, 0};
print_struct_elements(&T1);
print_struct_elements(&T2);
return 0;
}
void
print_struct_elements(T_THREAD *T) {
printf("\nContents of a structure %s are:\n", T->name);
printf("thread_id: %d\n",T->thread_id);
printf("is_valid: %d\n", T->is_valid);
}
ли вам хотите распечатать значения конкретного экземпляра или макета общей структуры? (Хотя ответ никоим образом, вы должны сделать это самостоятельно) – user45891
Я хотел бы напечатать макет общей структуры. Если я добавлю еще несколько полей в структуру, тогда мой printf также сможет напечатать новый добавленный. – user3555115