c-将二进制文件读取到链表中(只读取最后一个节点)



首先,很抱歉,我知道这个问题被问了很多——我甚至读了几篇文章,但仍然没有写出一个有效的代码。这是我的基本循环,但它只读取最后一个节点,所以我做错了什么?

谢谢。

这是全球性的:

struct Inventory
{
int cod;
int quant;
float price;
char name[30];
struct Inventory *next;
};
struct Inventory *inventory = NULL;

这是要读取的函数。

void load(void)
{
FILE *ptr;
ptr=fopen("inventory.dat", "rb+");
if (!ptr)
{
    return;
}
struct Inventory *p;
while(!feof(ptr))
{
    p = malloc(sizeof(struct Inventory));
    fread(p, sizeof(struct Inventory), 1, ptr);
    p->next = inventory;
    inventory = p;
}
fclose(ptr);
}

您将需要另一个变量来存储最近的(current)指针。该代码只是一个示例,用来说明指针是如何连接的。

head指向列表的开头,current指向列表中最近添加的内容。->prox指针指向列表中的下一个项目。

while(!feof(ptr))
{
    p = malloc(sizeof(struct Inventory));
    if (!head)
    {
        head = malloc(sizeof(struct Inventory));   
        current = head;
    }
    fread(p, sizeof(struct Inventory), 1, ptr);
    current->prox = p;
    current = p;
}

相关内容

  • 没有找到相关文章