我正在尝试将文件读入动态数组。 首先,我使用open()打开文件,以便获取文件描述符 但后来我不知道如何使用malloc将内存分配给动态数组,以便从内存中对文件进行一些数据修改。
答案 0 :(得分:3)
请在发布问题前搜索,我想您可以在这里找到答案:
答案 1 :(得分:2)
open(),lseek()到文件末尾,使用tell()获取文件大小,然后相应地分配内存将如上所述正常工作。
除非有特殊原因,否则fopen(),fseek(),ftell()是一个更好的主意(可移植到C标准库中)。
这当然假设您要打开的文件很小。如果您正在处理大文件,那么为整个文件分配内存可能根本就不是一个好主意。
您可能会考虑将内存映射文件用于大文件。 POSIX系统提供mmap()和munmap()函数,用于映射内存中的文件或设备。有关详细说明,请参阅mmap man page。内存映射文件的工作方式类似于C数组,但获取实际文件数据的责任留给操作系统,该操作系统在处理文件时根据需要从磁盘中提取适当的页面。
如果文件大小大于32位地址空间,则内存映射文件方法有局限性。然后,您一次只能映射文件的一部分(在32位计算机上)。
答案 2 :(得分:-1)
char *buffer = (char *)malloc(size);
int actual = read(buffer,size,filehandle);
现在字节在缓冲区中