bool ReadWholeFile(const char* pszFilePath, void **pBuff)
{
FILE * pFile =NULL;
long lSize;
char * buffer;
size_t result;
fopen_s (&pFile, pszFilePath, "rb" );
if (pFile==NULL)
{
printf("open file failed!!!");
return false;
}
/* 获取文件大小 */
fseek (pFile , 0 , SEEK_END);
lSize = ftell (pFile);
rewind (pFile);
/* 分配内存存储整个文件 */
buffer = (char*) malloc (sizeof(char)*lSize);
if (buffer == NULL)
{
fputs ("Memory error",stderr);
return false;
}
/* 将文件拷贝到buffer中 */
result = fread (buffer,1,lSize,pFile);
if (result != lSize)
{
fputs ("Reading error",stderr);
return false;
}
*pBuff = buffer;
if (pFile)
{
fclose (pFile);
}
return true;
}
调用此函数之后 应该free掉pBuff。
调用例子:
int _tmain(int argc, _TCHAR* argv[])
{
char *pszRead = NULL;
ReadWholeFile("1.txt", (void **)&pszRead);
printf(pszRead);
if (pszRead)
{
free(pszRead);
}
return 0;
}