c - C中的键值对?
问题描述
我有一个格式为的字符串
"SERVERID=12345\nSERVERKEY=asdasw\nSERVERAPPID=123213\n"
我已经使用strtok()
. 有没有办法为每一行制作一个键值对?就像也许将它们存储在某种数组中?我的意思是,如果我愿意SERVERID
,我只是说它Array['SERVERID']
会12345
作为值返回。有没有办法在C中做到这一点?
解决方案
标准 C 没有像您正在寻找的那样为您提供任何“容器类型”。您仍然有多种选择来解决您的问题:
可能听起来很傻,但你可以切换到不同的语言。这至少是值得考虑的事情。例如,想到 C++,提供
std::map
类型。始终可以选择自己实施。一个非常简单的想法是使用结构数组,例如
struct stringpair { char *key; char *value; }; struct stringpair *table; // ... size_t entries = 42; // number of entries you found table = malloc(entries * sizeof *table); // check for NULL after this // look for an entry: char *value = 0; for (size_t i = 0; i < entries; ++i) { if (!strcmp(table[i].key, "SERVERID")) { value = table[i].value; break; } }
这当然是一个非常基本的解决方案,并且在很多条目时表现不佳。我也没有测试这段代码,只是给你一个粗略的想法。如果您需要快速查找,则需要实现哈希表,或使用选项 1 或 2。
推荐阅读
- javascript - React-Select 未在第一次更改时更新
- csv - 空手道 - 是否可以在一个文件中使用 csv 文件中的第一行数据,在另一个特征文件中使用第二行数据
- string - 使用块大小将字符串转换为 ASCII
- python - 如何在熊猫数据框列中提取数据框
- node.js - 如何设置 PKG_CONFIG_PATH 环境变量?
- sql - 如何在列中找到相似的数据
- video - 从 NDI 源检查真实 FPS
- java - 从 .xlsx 表中读取所有下拉选项
- java - 如何实现自动测试以作为消费者读取 kafka 消息
- jenkins - 如何在 Jenkins Groovy 中为分支创建数组