【问题标题】:How can I read an array of doubles with mmap from text file如何从文本文件中读取带有 mmap 的双精度数组
【发布时间】:2017-04-01 17:01:31
【问题描述】:

我试过了:

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

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

【问题讨论】:

  • double * 不是二维数组。
  • 我认为二维数组是一维的,因为它看起来更容易。不是一个很有帮助的答案
  • 不是一个很有帮助的问题。一维数组不是二维数组。兔子不是狐狸!哦,还有cmets不是用来接听的,你要接tour

标签: c arrays file 2d mmap


【解决方案1】:

你不能。

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

1.0 2.0 3.0
1.1 2.1 3.1

你不能mmap那个文件并将映射的内存当作double*,因为那是字符数据。

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

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

【讨论】:

    猜你喜欢
    • 2016-06-10
    • 1970-01-01
    • 1970-01-01
    • 2019-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-06
    • 2011-05-09
    相关资源
    最近更新 更多