请教一个文件读取的问题
我想读取所有的文件内容, 并把它放入一个char数组中(szFileBuff是一个char *数组)
调用后ReadFile返回1, 证明已经正确的读取了文件, 但是我发现szFileBuff是一个空值, 并没有读取到文件? 请问大侠门有没有用过ReadFile, 最好能给个使用的完整例子, 谢谢
我的代码如下:
DWORD ilength;
BOOL blRead = FALSE;
blRead = ReadFile(hFile, szFileBuff, ilength, &ilength, NULL);
if(FALSE == blRead)
{
return FALSE;
}
else
{
return TRUE;
}
问题点数:80、回复次数:11Top
1 楼xqk(夏乾坤)回复于 2005-03-01 15:04:16 得分 0
我觉得还是参数的值不对吧传进去的Top
2 楼qiangorqiang(qiangqiang)回复于 2005-03-01 15:06:41 得分 0
你看一下ilength的值是多少。Top
3 楼jslisong(碧螺春)回复于 2005-03-01 15:06:44 得分 0
CreateFile??Top
4 楼free_eyes(自由之眼)回复于 2005-03-01 15:13:19 得分 0
我的全部代码如下:
BOOL CSystemLog::OpenUserFile(char * szTargetID, char * szFileBuff)
{
if(TRUE != OpenTargetFile(szTargetID))
{
return FALSE;
}
else
{
DWORD ilength;
if(FALSE == ReadFile(hRead, szFileBuff, ilength, &ilength, NULL))
{
return FALSE;
}
else
{
return TRUE;
}
}
}
BOOL CSystemLog::OpenTargetFile(char *szTargetID)
{
if(INVALID_HANDLE_VALUE != hRead)
{
CloseHandle(hRead);
}
wsprintf((LPTSTR)szFileName, "%s%s.log", szUserPath, szTargetID);
//创建日志文件
if((hRead = CreateFile((LPCTSTR)szFileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_ALWAYS, 0, NULL))==INVALID_HANDLE_VALUE)
{
return FALSE;
}
//SetFilePointer(hRead, 0, 0, FILE_BEGIN);
return TRUE;
}
文件打开成功了, 但是无法将数据读出Top
5 楼free_eyes(自由之眼)回复于 2005-03-01 15:16:01 得分 0
哦, 我发现错误在什么地方了. 必须指定读取文件的大小
比如读取1024个字节. 就要这么写
FALSE == ReadFile(hRead, szFileBuff, (DWORD)1024, &ilength, NULL)
但是我的文件大小是不固定的呀? 如何才能全部读出呢?Top
6 楼somexing(somexing)回复于 2005-03-01 15:16:24 得分 20
szFileBuff 要预先分配内存
比如
char szFileBufff[100000];
或者
szFileBuff = (char *)malloc(100000);
free(szFileBuff);Top
7 楼xuzheng318(忧郁王子)回复于 2005-03-01 15:19:05 得分 0
返回值是否正确?Top
8 楼somexing(somexing)回复于 2005-03-01 15:19:15 得分 40
需要读多少,传入参数就多大
当然可以一次性读出,参数就是GetFileSize 求一下Top
9 楼xuzheng318(忧郁王子)回复于 2005-03-01 15:22:05 得分 0
或者szFileBuff就没有分配空间!Top
10 楼xqk(夏乾坤)回复于 2005-03-01 15:22:49 得分 20
你可以先读文件大小
int handle = open(filename,O_CREAT);
DWORD size = filelength(handle);
ReadFile(hRead, szFileBuff, size , &ilength, NULL)
Top
11 楼free_eyes(自由之眼)回复于 2005-03-01 15:26:18 得分 0
谢谢楼上各位, 给分
Top




