Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c?的股票信息数据结构?_C_Data Structures - Fatal编程技术网

c?的股票信息数据结构?

c?的股票信息数据结构?,c,data-structures,C,Data Structures,我是C语言的新手(不到一个星期),我正试图找到一种更有效的检索数据的方法。基本上假设我有一些股票数据:股票行情、价格、变化 到目前为止,我的方法是将所有数据放在3个数组中。如果我想要IBM的价格,我搜索ticker数组并获得索引位置,然后从price数组中获得该位置。它工作得很好,但因为我做了很多查找,而且我的数据没有变化,所以我想知道是否有更有效的方法 我试图寻找一个字典/hashmap来存储IBM作为一个键和一个price/change数组作为值,但我似乎不知道如何在C中实现这一点。如果可能

我是C语言的新手(不到一个星期),我正试图找到一种更有效的检索数据的方法。基本上假设我有一些股票数据:股票行情、价格、变化

到目前为止,我的方法是将所有数据放在3个数组中。如果我想要IBM的价格,我搜索ticker数组并获得索引位置,然后从price数组中获得该位置。它工作得很好,但因为我做了很多查找,而且我的数据没有变化,所以我想知道是否有更有效的方法

我试图寻找一个字典/hashmap来存储IBM作为一个键和一个price/change数组作为值,但我似乎不知道如何在C中实现这一点。如果可能的话,有没有一种简单的方法来实现这一点?我正在开发一个不同的程序,我真的不想学习如何从头开始创建自己的程序(尽管如果必须的话,我会继续开发)

试试这个:

头版上的例子几乎不言自明

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;
    }
}
试试这个:

头版上的例子几乎不言自明

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;
    }
}

您可以使用
struct
对相关信息进行分组。当然有一些公共域哈希表代码可以用于查找。你真的应该切换到C++。然后,您可以使用列表、映射、无序映射等。您可以使用
struct
对相关信息进行分组。当然有一些公共域哈希表代码可以用于查找。你真的应该切换到C++。然后你有列表、地图、无序地图等等。非常感谢。我还在学习,我是否需要在每次添加新条目时进行malloc,或者如果我想添加ibm和价格/变更,hash_add_str会为我完成所有操作吗?以上命令是否存在?@Error\u 404我添加了更多示例。是-当您向散列添加项目时,您必须
malloc
内存,当您完成后,
free
。非常感谢。我还在学习,我是否需要在每次添加新条目时进行malloc,或者如果我想添加ibm和价格/变更,hash_add_str会为我完成所有操作吗?以上命令是否存在?@Error\u 404我添加了更多示例。是-向哈希中添加项时必须
malloc
内存,完成后必须
free