c - 如何在 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);
}
解决方案
dict_size
返回 a size_t
,而不是 a size_t*
。所以在这里使用指针是错误的。
你要这个:
if(strncmp(cmd, "siz", 3) == 0) {
size_t size = dict_size(dict);
printf("%zu\n", size);
}
奖金:
像你一样计算字典大小是低效的。每次添加新条目和删除条目时都应更新字典大小。
推荐阅读
- postgresql - Postgres:从另一个表中插入值作为多行插入的一部分?
- linux - systemctl 在启动时启用和禁用自定义服务
- ios - 通过在 URL 中嵌入密码从私有 iOS 应用程序中访问受密码保护的网站有哪些安全风险?
- javascript - 如何使用 javascript 代码在网站上选择下拉元素?
- java - 内存不足问题
- c# - 如何在文本对象上修复此空引用错误?
- php - Sylius liip 想象:无法打开图像
- javascript - 悬停 jquery 无法找到我的表的行
- vba - 如果记录尚不存在,则使用 MsgBox 将表单打开到新记录或从连续表单中删除记录
- kubernetes - 掌舵有什么好处?