我是C/C++新手,需要幫助。如何使用從MapViewOfFile給出的指針,當它不以空字符結尾時?
所以這是我做的:
HANDLE OpenH = CreateFile(filePath,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
HANDLE hMapFile = CreateFileMapping(OpenH, NULL,PAGE_READONLY,0,0,FFD.cFileName);
char * pBuf = (char *) MapViewOfFile(hMapFile,FILE_MAP_READ,0,0,0);
if(strstr(pBuf,searchword) != 0)
我有很多在他們的數據映射文本文件,我必須使用指針pBuf
在strstr
,strcmp
,strtok
等功能,但pBuf
在它的末尾沒有空終止字符,並且每次在函數中使用它時都會觸發訪問。那麼我怎樣才能使用pBuf
?
Euh,也許'NUL'-終止緩衝區呢?或複製超過&0期。副本? – 2013-08-07 08:34:41
另外,如果這是C而不是C++,'(char *)MapViewOfFile'強制轉換是多餘的,並且被認爲是一個錯誤。不要施放'void *'。 – 2013-08-07 08:37:24
如果你有任何想法緩衝區有多大,那麼H2CO3提出的似乎可行。例如。像'char temp_buf [200] =「」; strncpy(temp_buf,pBuf,200);' – Nobilis