C二进制文件作为数组处理

时间:2013-02-17 19:47:32

标签: c file binary

我想像访问数组一样访问文件,而不是使用fopen()和fgetc()/ fputc()等。

我正在寻找一个方法,它会给我一个指向该文件的指针,我可以将其视为一个大字符串(EOF终止或给定长度,无论如何),我希望整个文件在内存中并需要快速访问特定部分。

这可能吗?如果是这样,你能推荐一种方法吗?我也很好奇为什么这不是在c中访问文件的默认方式,是因为文件通常不存储在连续的内存中?

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

您正在寻找称为内存映射文件的内容。例如,如果您使用的是Unix,请查找mmap

fd = open(...);    
p = mmap(NULL, buf.st_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);

/* Use `p` like a pointer to some memory and fstat to find size. */

如果您使用的是Win32,请查找CreateFileMappingMapViewOfFile