C语言 如何从文本文件中读取带有 mmap 的双精度数组



我试过这个:

double *mat = (double *) mmap(NULL, sb.st_size, PROT_READ, MAP_SHARED, fd, 0);

其中sb.st_size是文件的大小,fd 是打开文件的描述符。如果我想遍历所有元素,我只得到 0,但文件只有非 0 值。这有什么问题?

你不能

如果你真的有一个文本文件,那么你就有了文本数字,几乎就像一个电子表格:

1.0 2.0 3.0
1.1 2.1 3.1

您不能mmap该文件并将映射的内存视为double*,因为那是字符数据。

为了将文件从字符数据转换为双精度,您必须执行诸如fscanfscanf之类的操作来处理数字。

另一方面,如果你写出一团双精度作为二进制数据,那么你就可以做mmap,几乎就像你描述的那样。

最新更新