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

标签 c file binary

我想像访问数组一样访问文件,而不是使用 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 .

关于C 二进制文件作为数组处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14925322/

相关文章:

c - 从函数返回字符数组打印垃圾值但在函数中打印正常?

c - 为什么 sem_wait 在 mac OSX 上不等待信号量?

c - GLSL 布局属性编号

jquery - CSS:如何使光标成为输入文件上的指针?

machine-learning - 二元分类准确率低于 50%

binary - 2的补码示例,为什么不随身携带?

c - fgets 为 popen 返回的 FILE 返回错误

c# - 将 FileSystemInfo 数组保存到文件

python - 错误 : The expanduser ('~' ) cannot be added to dirs. 'xxx' :'xxx"

.net - 搜索字节[]