如何在C中处理文件块?
我是C编程语言的初学者 我想在内存中读取一个1KB的文件块,并将其存储在内存哈希表中。为了处理冲突,我的哈希表中的每个bucket都有一个双链接列表 假设我将链表的一个节点建模为具有下一个指针和上一个指针的结构。我应该如何存储这个1 KB的文件块 任何建议或想法都值得赞赏如何在C中处理文件块?,c,file,file-io,C,File,File Io,我是C编程语言的初学者 我想在内存中读取一个1KB的文件块,并将其存储在内存哈希表中。为了处理冲突,我的哈希表中的每个bucket都有一个双链接列表 假设我将链表的一个节点建模为具有下一个指针和上一个指针的结构。我应该如何存储这个1 KB的文件块 任何建议或想法都值得赞赏 typedef struct struct_FILEBLOCK FILEBLOCK ; struct struct_FILEBLOCK { char *data ; FILEBLOCK
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 ;
}
然后
@user1338:OP可能考虑的是
字符数据[1024]
,而不是您的动态分配。首选哪种方法。。。视情况而定。由于FILEBLOCK
结构本身已经被动态分配,因此这样做应该是无害的。如果是数组,我宁愿使用动态分配。
void fbread(int fh,FBLOCK *fb)
{
read(fh,fb->data,1024) ;
/* whateva */
}