如何从文本文件中读取mmap的双精度数组

时间:2017-04-01 17:01:31

标签: c arrays file 2d mmap

我试过了:

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

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

1 个答案:

答案 0 :(得分:0)

你不能。

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

1.0 2.0 3.0
1.1 2.1 3.1

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

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

另一方面,如果您将一个双打blob写成二进制数据,那么您可以执行mmap,就像您描述的那样。