我正在写一个程序,它必须创建一个文件,将其映射到内存,然后写入二维数组。当我查看文件时遇到问题。它充满了不期望的价值。我猜,这个问题与铸造有关,但不能提出解决方案。所以,问题是,如何将双精度数组转换为char *?希望有人能给我一个线索来解决这个问题。是否有可能将double数组转换为char *?
int main(int argc, char **argv)
{
HANDLE plik, mappedFile;
char *poi;
LPCWSTR fileName = L"plik.txt";
double tab[8][12];
createMatrix(tab); // here I fill the array with values
// creating file
// mapping the file
poi = (char *)MapViewOfFile(
mappedFile,
FILE_MAP_ALL_ACCESS,
0,
0,
0);
if (!poi)
{
puts("Can't allocate Memory!");
abort();
}
memcpy(poi,tab,96*sizeof(double));
UnmapViewOfFile((void*)poi);
CloseHandle(mappedFile);
CloseHandle(plik);
getchar();
return 0;
}
请删除与您的问题无关的所有代码(即除转换之外的所有代码)。 – Kiril
我认为你传递* tab *的副本而不是指向它的指针。因此,任何修改都保留在本地副本中,并在函数返回时被破坏。 – farmdve
数组的名称正好是它的指针,所以将它传递给我在原始数组上操作的函数,而不是它的副本。 – mic4ael