我希望像访问数组一样访问文件,而不是使用fopen()和fgetc()/fputc()等。
我正在寻找一个方法,它将给我一个指向文件的指针,然后我可以把它当作一个大字符串(以EOF结尾或给定长度,随便什么),我希望整个文件都在内存中,并且需要快速访问特定部分。
这可能吗?如果是,你能推荐一种方法吗?我也很好奇为什么这不是c语言中访问文件的默认方式,是不是因为文件通常不存储在连续的内存中?
谢谢你的帮助。

最佳答案

您正在查找称为内存映射文件的文件。例如,如果您在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

07-24 09:46
查看更多