上面一段代码出现错误,Segmentation fault (core dumped)
//已完成
// 查询用户状态
//返回值是1,用户不存在。返回值是x,是该用户的用户状态
//原
// SessionNode *dbQuerySession(const char UserID[]) //出现segment fault
// {
// SessionNode* pCur = slist.head;
// SessionNode* pPre = NULL;
// while (0 != strcmp(UserID,pCur -> UserID))
// {
// pCur = pCur->next;
// }
// if (0 == strcmp(UserID,pCur -> UserID))
// {
// return pCur;
// }
// return NULL;
// };
SessionNode *dbQuerySession(const char UserID[])
{
SessionNode *pCur = slist.head->next;
SessionNode *pPre = slist.head;
while(pCur != NULL)
{
if(strcmp(UserID,pCur->UserID))
{
pPre = pPre->next;
pCur = pCur->next;
}
else
{
return pCur; //存在UserID
}
}
return NULL;//不存在UserID
};
链表如果加上了头结点,遍历头结点的时候一定要从头结点的下一个结点开始遍历。
不然就会有块segment fault的错误,今天写代码这一块出错了,吃了大亏
头结点中没有数据域,所以如果调用头结点的数据域就会出现错误