使用keyNumber提取数据

时间:2019-01-10 18:34:00

标签: c struct

 {
 "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语言的地图和字典,所以我只是不知道该怎么做。

2 个答案:

答案 0 :(得分:1)

如果您确实不想强迫用户查找食物的数量并仍然进行查找,gperfhttps://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放入一个数组中,然后遍历该数组,直到找到具有给定键的存储。