[英]Is there a possibility to convert array of double to char *?
我正在編寫一個程序,它必須創建一個文件,將其映射到內存,然后寫入二維的雙精度數組。 當我查看文件時遇到問題。 它充滿了不期望的價值。 我想,這個問題與鑄造有關,但無法提出解決方案。 那么,問題是,如何將雙精度數組轉換為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;
}
你在尋找這樣的東西:
char* poi = new char[8*12*sizeof(double)];
int index = 0;
for(int i = 0; i < 8; i++)
{
for(int j = 0; j < 12; j++)
{
*(double*)(poi + index) = tab[i][j];
index+=sizeof(double);
}
}
我建議你用簡單的WriteFile函數替換文件映射。 它對許多應用程序來說可能更快。
WriteFile(plic, tab, sizeof(tab), 0, 0);
將准確,快速地序列化您的數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.