我正在通过套接字发送学生记录。数据库向客户端发送列表中学生的数量,然后一次发送一个记录。我遇到的问题是,当没有学生时,列表以未初始化的记录开头。我想在记录中添加一个新字段,说明它们是新记录还是已填充,但这意味着要更改很多代码。
有没有一种简单的方法可以检查一条记录是否已被填满。以下是学生记录的结构。
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;
最佳答案
如果您系统上的空指针具有全零位模式(而且它可能确实如此),则在
calloc
之后您不需要任何该代码。您可以通过查看任何不具有合法全零值的字段来跟踪记录是否已初始化。也许是
lname
或SID
字段?
关于c - 如何区分初始化结构和未初始化结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17223501/