C 如何使用mmap从文本文件中读取一个双精度数组
我试过这个:C 如何使用mmap从文本文件中读取一个双精度数组,c,arrays,file,2d,mmap,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 2.0 3.0 1.1 2.1 3.1 您不能mmap该文件并将映射的内存视为double*,因为这是字符
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*
,因为这是字符数据
为了将文件从字符数据转换为双精度数据,您必须执行类似于fscanf
或scanf
的操作来处理数字
另一方面,如果你写了一组二进制数据,那么你可以做
mmap
,就像你描述的那样。double*
不是2D数组。我认为2D数组是1D数组,因为它看起来更简单。不是很有用的答案不是很有用的问题。一维阵列不是二维阵列。兔子不是狐狸!哦,而且评论不是用来回答的,你要拿这个。