高分求解....请问Readfile为什么每次只能读到5个字节的东西??
我读的是一个位图,
char *buf;
hFile = CreateFile (szFileName, GENERIC_READ, FILE_SHARE_READ, NULL,
OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL) ;
if (hFile == INVALID_HANDLE_VALUE) return NULL ;
dwFileSize = GetFileSize (hFile, &dwHighSize) ;
if (dwHighSize){
CloseHandle (hFile) ;
return NULL ;}
buf = (char*)malloc ((int)dwFileSize*sizeof(char)) ;
if (! buf) {
CloseHandle (hFile) ;
return NULL ;
}
bSuccess = ReadFile (hFile, buf, dwFileSize, &dwBytesRead, NULL) ;
if (strlen(buf)==5)
MessageBox(hwnd1,L"ok",L"ok",0);
在得到文件长度的时候dwFileSize的值是正确的,但是不知道为什么,当我在ReadFile的时候,读出来的strlen(buf)==5,是不是在读的时候由于buf本身是char指针所以没法转换啊?????
应该怎么改呢??
------解决方案--------------------
位图文件本身是二进制文件,里面可能包含\0
而strlen()的依据就是\0
也就是说,虽然ReadFile读了100字节的数据,但是其中第6个字节为\0,那么strlen()计算的长度就是5
对于二进制数据是不能strlen的
------解决方案--------------------
用char *来存储没有问题,只是长度不能通过strlen来计算
是不是可以使用dwBytesRead的值作为实际长度?
你这个是windows程序吧,我不是很熟悉