Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何使用mmap从文本文件中读取一个双精度数组_C_Arrays_File_2d_Mmap - Fatal编程技术网

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数组,因为它看起来更简单。不是很有用的答案不是很有用的问题。一维阵列不是二维阵列。兔子不是狐狸!哦,而且评论不是用来回答的,你要拿这个。