我是C的新手(不到一周),我正在尝试找出一种更有效的检索数据的方法。基本上我想象一下我有一些股票数据:股票代码,价格,变化。
到目前为止,我的方法是将所有数据放在3个数组中。如果我想要IBM的价格,我搜索自动收报机数组并获取索引位置,然后从价格数组中获取该位置。它工作正常,但因为我做了很多查找而我的数据没有改变所以我想知道是否有更有效的方法可以做到这一点?
我试图寻找一个字典/散列图来存储IBM作为一个关键字和一组价格/变化作为值,但我似乎无法弄清楚如何在C中这样做。如果可能的话有一个简单的方法来做到这一点?我正在研究一个不同的程序,并且真的不想学习如何从头开始创建自己的程序(尽管如果必须的话,我会对它进行处理)。
答案 0 :(得分:5)
试试这个:http://uthash.sourceforge.net/
首页上的例子非常自我解释。
struct Stock {
float price, change;
char name[3];
UT_hash_handle hh;
};
struct Stock * stocksHash = NULL;
struct Stock * stockItem;
HASH_ADD_STR(stocksHash, name, stockItem );
HASH_FIND_STR(stocksHash, "IBM", stockItem );
//edit
void new_stock(struct Stock * stocksHash, char *name, float price, float change) {
struct Stock *s;
s = malloc(sizeof(struct Stock));
strncpy (s->name, name, 3);
s->price = price; s->change = change;
s->id = user_id;
HASH_ADD_STR( stocksHash, name, s );
}
void update_stock (struct Stock * stocksHash, char *name,
float price, float change) {
struct Stock *s;
HASH_FIND_STR (stocksHash, name, s);
if (s) {
s->price = price; s->change = change;
}
}