用字符串将映射文件写入字符串
问题描述:
我正在尝试用c和visual studio将字符串写入映射文件。用字符串将映射文件写入字符串
(pFile = (char *) MapViewOfFile(hMMap,FILE_MAP_ALL_ACCESS,0,0,0))
start = pFile;
while(pFile < start + 750){
*(pFile++) = ' ';
*(pFile++) = 'D';
*(pFile++) = 'N';
*(pFile++) = 'C';
*(pFile++) = 'L';
*(pFile++) = 'D';
*(pFile++) = ' ';
if(!((pFile - start) % 50))
*(pFile++) = 10;
else
*(pFile++) = ',';
}
如果我写这样的事情,我可以写得很好。但我想写一个字符串这个文件。我能怎么做?我曾尝试
sprintf(toFile, "A message of %3d bytes is received and decrypted.\n", strlen(message));
WriteFile(pFile,toFile,strlen(toFile),&bytesWritten,NULL);
这个媒体链接...
答
WriteFile()
希望打开HANDLE
到一个文件,而不是指向一个内存地址。只需将您的新数据直接写入所指向的内存中即可。您可以使用C库字符串函数,例如:
char *start = (char *) MapViewOfFile(hMMap,FILE_MAP_ALL_ACCESS,0,0,0);
char *pFile = start;
while (pFile < (start + 750))
{
strcpy(pFile, " DNCLD ");
pFile += 7;
*(pFile++) = (((pFile - start) % 50) == 0) ? '\n' : ',';
}
...
sprintf(pFile, "A message of %3d bytes is received and decrypted.\n", strlen(message));
...
UnmapViewOfFile(start);
当您尝试第二个代码段时发生了什么?您是否调用了['GetLastError'](http://msdn.microsoft.com/zh-cn/library/windows/desktop/ms679360.aspx)来查看出了什么问题? – 2011-12-17 11:44:46
没有错误,但它只写入一个字符文件... – 2011-12-17 11:48:42
你只是想写一些内存。为此使用'memcpy'。 'WriteFile'是完全错误的。当你有文件句柄时使用它。用内存映射文件你有一个指向内存的指针。如果你想使用'WriteFile',你只需使用'CreateFile'而不用打扰内存映射。也许这真的是你需要做的。 – 2011-12-17 16:16:59