首页 > 解决方案 > 如何在 C 中查找键/值字典的大小

问题描述

我对 C 非常陌生,我正在学习使用结构和指针,但我似乎无法弄清楚我在这里做错了什么。所以我试图找到每次调用 main 函数时都会重置的字典的大小。当我尝试手动运行代码时,它会说分段错误。有 2 个文件被测试,一个是字典结构和所有函数,一个是主文件。任何帮助将不胜感激。

我在 dict 文件中的代码:

size_t dict_size (const dict_t* dict) {
  dict_list_t* el = dict->head;
  size_t dict_ct = 0;

  while(el){
    dict_ct++;
    el = el->next;
  }
  return dict_ct;

}

和主文件中的代码:

else if(strncmp(cmd, "siz", 3) == 0) {
       size_t* size =(size_t*) dict_size(dict);
       printf("%ld\n", *size);
    }

标签: cpointersstruct

解决方案


dict_size返回 a size_t,而不是 a size_t*。所以在这里使用指针是错误的。

你要这个:

if(strncmp(cmd, "siz", 3) == 0) {
       size_t size = dict_size(dict);
       printf("%zu\n", size);
    }

奖金:

像你一样计算字典大小是低效的。每次添加新条目和删除条目时都应更新字典大小。


推荐阅读