nabumei 发表于 2014-07-12 21:58

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]
查看完整版本: linux的dbm是不是不能一边用dbm_nextkey()遍历,一边用dbm_delete()删除呀?