linux的dbm是不是不能一边用dbm_nextkey()遍历,一边用dbm_delete()删除呀?
用下面的函数只删除了一条记录,不知道为什么,不知道删除记录数据的时候,是不是连同KEY也一起删掉?static void del_data(const char *catalog_str,const int track_no)
{
char tmp_str;
datum key_datum,del_datum;
char key;
int no = 0;
int result = 1;
memset(tmp_str,'\0',sizeof(tmp_str));
sprintf(tmp_str,"%s%d",catalog_str,track_no);
for(key_datum = dbm_firstkey(dbm_ptr) ; key_datum.dptr ; key_datum = dbm_nextkey(dbm_ptr))
{
memcpy(key,(char *)key_datum.dptr,key_datum.dsize);
if(strncmp(tmp_str,key,strlen(tmp_str)) == 0)
{
printf("%s\n",key);
del_datum.dptr = (void *)key;
del_datum.dsize = strlen(key);
(void)dbm_delete(dbm_ptr,del_datum);
}
}
}
页:
[1]