Я отправляю студенческие записи через сокет. База данных отправляет клиенту количество студентов в списке и затем отправляет записи по одному. Проблема, с которой я сталкиваюсь, заключается в том, что, когда нет учеников, список начинается с неинициализированной записи. Я думал о добавлении нового поля в записи, которые указывали, были ли они новой записью или были заполнены, но это означало бы изменение МНОГО кода.Как определить разницу между инициализированной структурой и неинициализированной структурой?
Есть ли простой способ проверить запись, чтобы узнать, было ли оно заполнено. Ниже приведена структура записей студентов.
typedef struct student{
char lname[10], initial, fname[10];
unsigned long SID;
float GPA;
} SREC;
typedef struct node{
SREC student;
int deleted;
struct node *left;
struct node *right;
} NODE;
Это инициализация начального пустого узла.
NODE *lname = calloc(1, sizeof(NODE));
lname->left = NULL;
lname->right = NULL;
lname->deleted = 0;
Yap, отслеживайте его вручную. –
Ну, как вы знаете, что левый или правый узел неинициализирован? Почему это должно быть иначе для корня? –
Хм ... Я только сейчас заметил, что это использование calloc ... так как память должна быть инициализирована всем 0 ... можете ли вы повторить свой вопрос? Что не инициализировано? – wilsonmichaelpatrick