0

我是 C 的新手(不到一周),并且正在尝试找出一种更有效的检索数据的方法。基本上想象我有几条股票数据:股票代码、价格、变化。

到目前为止,我的方法是将所有数据放入 3 个数组中。如果我想要 IBM 的价格,我会搜索代码数组并获取索引位置,然后从价格数组中获取该位置。它工作得很好,但是因为我做了很多查找并且我的数据没有改变,所以我想知道是否有更有效的方法来做到这一点?

我试图寻找一个字典/哈希图来存储 IBM 作为键和一组价格/变化作为值,但我似乎无法弄清楚如何在 C 中做到这一点。如果可能的话,有一个简单的方法去做这个?我正在开发一个不同的程序,并且真的不想学习如何从头开始创建自己的程序(尽管如果必须,我肯定会处理它)。

4

1 回答 1

5

试试这个:http ://utash.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;
    }
}
于 2012-06-04T16:20:10.767 回答