hello head

/****************************************************************************************
******功    能:遍历哈希表获取所有的用户名和电话号码
******输入参数:userName表示要查询的用户名
******          phoneNumberFound 用来存放查找到的电话号码(由调用者保证空间足够大)
******返 回 值:-1参数错误,0成功遍历,遍历结果放到全局变量userAndPhone内
*****************************************************************************************/
int getAllUserAndPhone()
{
    if (userCnt <= 0)
    {
        printf("invalid userCnt[%d].\n", userCnt);
        return ERROR_PARAMETER;
    }
    /* 先清空已保存的userAndPhone */
    if (NULL != userAndPhone)
    {
        free(userAndPhone);
        userAndPhone = NULL;
    }
    
    userAndPhone = (UserAndPhone*)malloc(userCnt * sizeof(UserAndPhone));
    
    PhoneBook *s, *tmp;
    int i = 0;
    HASH_ITER(hh, users, s, tmp)
    {  
        if (i == userCnt)        /* 保证数组不越界 */
        {
            return SUCCESS;
        }
        strcpy(userAndPhone[i].userName, s->userName);
        strcpy(userAndPhone[i].phoneNumber, s->phoneNumber);
        ++i;
    } 
    return SUCCESS;
}

/****************************************************************************************
******功    能:删除哈希表以及已遍历的所有的用户名和电话号码
******输入参数:无
******返 回 值:0成功删除
*****************************************************************************************/
int deleteAllUserAndPhone()
{
    if (NULL != userAndPhone)
    {
        free(userAndPhone);    
        userAndPhone = NULL;
    }
    PhoneBook *s, *tmp;
    /* free the hash table contents */  
    HASH_ITER(hh, users, s, tmp) 
    {  
      HASH_DEL(users, s);  
      free(s);  
    }
    userCnt = 0;
    users = NULL;
    return SUCCESS;
}

 

posted on 2017-09-29 15:22  gardonkoo  阅读(100)  评论(0编辑  收藏  举报

hello foot