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_File_File Io - Fatal编程技术网

如何在C中处理文件块?

如何在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

我是C编程语言的初学者

我想在内存中读取一个1KB的文件块,并将其存储在内存哈希表中。为了处理冲突,我的哈希表中的每个bucket都有一个双链接列表

假设我将链表的一个节点建模为具有下一个指针和上一个指针的结构。我应该如何存储这个1 KB的文件块

任何建议或想法都值得赞赏

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 */
    }