【发布时间】:2013-06-20 20:49:01
【问题描述】:
我正在通过套接字发送学生记录。数据库向客户端发送列表中的学生人数,然后一次发送一个记录。我遇到的问题是,当没有学生时,列表以未初始化的记录开头。我考虑在记录中添加一个新字段,说明它们是新记录还是已填充,但这意味着要更改很多代码。
是否有一种简单的方法可以检查记录以查看它是否已被填写。以下是学生记录的结构。
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... 因此内存应该被初始化为全 0...你能重申你的问题吗?什么没有初始化?
-
您说“数据库向客户端发送列表中的学生人数,然后一次发送一个记录。”如果没有记录,数据库不会向您发送计数 0,在这种情况下,您可以采取适当的行动,而不必乱七八糟地尝试确定您是否有有效的记录?
标签: c struct initialization