如何在C中处理文件块?

时间:2013-11-16 20:44:26

标签: c file file-io

我是C编程语言的初学者。

我想在内存中读取1 KB的文件块并将其存储在In-Memory HashTable中。为了处理冲突,我在HashTable中为每个桶提供了一个双向链表。

假设我将链表的节点建模为具有next和previous指针的结构。我该如何存储1 KB的文件块?

赞赏任何指示或想法。

1 个答案:

答案 0 :(得分:1)

typedef struct struct_FILEBLOCK FILEBLOCK ;

struct struct_FILEBLOCK {
    char             *data ;
    FILEBLOCK        *next ;
    FILEBLOCK        *prev ;
    } ;

然后你所有的实际数据块都可能只有1k长,你的列表元素很小。

FILEBLOCK *fballoc(void)
{
FILEBLOCK *fb = malloc(sizeof(FILEBLOCK)) ;
fb->data = malloc(1024) ;
fb->next = 0 ;
fb->prev = 0 ;
return fb ;
}

然后

void fbread(int fh,FBLOCK *fb)
{
    read(fh,fb->data,1024) ;
    /* whateva */
    }