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);
/* 分配内存存储整个文件 */
//分配的内存大小一定要比数据多一个字节 末尾存储0字符 如果没有这个 读取结果可能随机异常 (末尾多一些非正常数据)
buffer = (char*)calloc( lSize+1, sizeof(char));
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;
}
//调用例子
char* pszRead = NULL;
if (ReadWholeFile("d:/test.txt", (void**)&pszRead))
{
cout << pszRead << "\r\n" << endl;
free(pszRead);
}else{
cout << "读取失败" << "\r\n" << endl;
}
C/C++读取整个文件 亲测可用
最新推荐文章于 2024-06-18 12:50:32 发布