{
"appType": "EXTERNAL",
"appDetails":{
"os": "MAC_OSX",
"osVersion": "1.2",
"appVersion": "1.0",
"deviceFamily": "MOBILE",
"ipAddress": "192.168.5.2"
},
"consumerSections":[
"Support",
"English",
"other"
],
"engagementAttributes": [
{
"type": "personal",
"personal": {
"contacts": [{"email":"test.com","phone":"12345678"},{"email":"test2.co.il","phone":"98765430"}],
"age": {
"age":30.0,
"year":1985,
"month":7,
"day":22
},
"firstname": "test",
"lastname": "test2",
"gender": "FEMALE",
"company": "liveperson"
}
}
]
}
使用用户输入的号码提取特定数据时遇到麻烦。 例如:A〜O是商店的名称,应用程序将询问用户选择了哪个商店,用户将输入商店的“ keyNumber”,第三个数字是卡路里数据。 我的问题是如何从keyNumber中获取卡路里数据。没有C语言的地图和字典,所以我只是不知道该怎么做。
答案 0 :(得分:1)
如果您确实不想强迫用户查找食物的数量并仍然进行查找,gperf
(https://www.gnu.org/software/gperf/)可以静态生成一个完美的哈希值。 1}}。像这样的东西
O(1)
然后,%ignore-case
%readonly-tables
%struct-type
struct month { const char *name; int calories; };
%%
A, 390
B, 710
C, 569
D, 450
E, 630
F, 370
G, 720
H, 680
I, 570
J, 530
K, 570
L, 380
M, 670
N, 590
O, 430
%%
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
const struct month *month(const char *str) {
return in_word_set(str, strlen(str));
}
int main(void) {
const struct month *a = month("A"), *a_lc = month("a"), *z = month("z"),
*j = month("j");
printf("A: %d.\n"
"a: %d.\n"
"z: %d.\n"
"j: %d.\n", a ? a->calories : -1, a_lc ? a_lc->calories : -1,
z ? z->calories : -1, j ? j->calories : -1);
return EXIT_SUCCESS;
}
。从gperf Calories.gperf > Calories.c
开始,gperf 3.0.4
编译器抱怨C
参数未使用,但这可能是因为示例中所有示例的len
。它还抱怨缺少初始化器,但这很简单。
len == 1
答案 1 :(得分:0)
我不是C家伙,但是作为一般的编程逻辑,我想您可以将store1-store15放入一个数组中,然后遍历该数组,直到找到具有给定键的存储。