0

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

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

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

谢谢你的帮助。

4

1 回答 1

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.

于 2013-02-17T19:48:32.623 回答