我是C的新手(不到一周),我正试图找出一种更有效的检索数据的方法.基本上想象我有几个股票数据:股票代码,价格,变化.
到目前为止,我的方法是将所有数据放在3个数组中.如果我想要IBM的价格,我搜索自动收报机数组并获取索引位置,然后从价格数组中获取该位置.它工作正常,但因为我做了很多查找,我的数据没有改变所以我想知道是否有更有效的方法来做到这一点?
我试图寻找一个字典/散列图来存储IBM作为键和价格/变化值作为值,但我似乎无法弄清楚如何在C中做到这一点.如果它可能有一个简单的方法去做这个?我正在研究一个不同的程序,并且真的不想学习如何从头开始创建自己的程序(尽管我必须这样做,我会对它进行处理).
试试这个: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;
}
}
Run Code Online (Sandbox Code Playgroud)