当前位置: 技术问答>linux和unix
高分求解....请问Readfile为什么每次只能读到5个字节的东西??
来源: 互联网 发布时间:2016-12-17
本文导语: 我读的是一个位图, char *buf; hFile = CreateFile (szFileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL) ; if (hFile == INVALID_HANDLE_VALUE) ...
我读的是一个位图,
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指针所以没法转换啊?????
应该怎么改呢??
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指针所以没法转换啊?????
应该怎么改呢??
|
位图文件本身是二进制文件,里面可能包含
而strlen()的依据就是
也就是说,虽然ReadFile读了100字节的数据,但是其中第6个字节为,那么strlen()计算的长度就是5
对于二进制数据是不能strlen的
而strlen()的依据就是
也就是说,虽然ReadFile读了100字节的数据,但是其中第6个字节为,那么strlen()计算的长度就是5
对于二进制数据是不能strlen的
|
用char *来存储没有问题,只是长度不能通过strlen来计算
是不是可以使用dwBytesRead的值作为实际长度?
你这个是windows程序吧,我不是很熟悉
是不是可以使用dwBytesRead的值作为实际长度?
你这个是windows程序吧,我不是很熟悉