/*******************************************************************
* 功能:C語言讀取文件內容
* 參數:filename - [in] 文件名
* content - [out] 文件內容
*******************************************************************/
void readFile(string &content,const char* filename)
{
//FILE *fp;
char* buffer = NULL;
int nLen = 0;
FILE *fp = fopen(filename,"rb");
if (fp == NULL)
{
cout << filename << " open failed!" << endl;
exit(1);
}
fseek(fp,0L,SEEK_END);//文件指針移到文件尾
long fsize = ftell(fp);//得到當前指針位置,既文件的長度
rewind(fp); //文件指針恢復到文件頭位置
//動態申請空間,爲保存字符串結尾標誌'\0',多申請一個字符的空間。
buffer = (char*)malloc(sizeof(char)*fsize+1);
if (buffer == NULL)
{
cout << "memory error!" << endl;
fclose(fp);
exit(1);
}nLen = fread(buffer,sizeof(char),fsize,fp);
buffer[nLen] = '\0';//添加字符串結尾標誌
string strBuffer(buffer);
content = strBuffer;
free(buffer);
buffer = NULL;
fclose(fp);}
//動態分配了以後一定要釋放,不然會造成內存泄露。
//分配前和釋放後都將指針設爲NULL,避免野指針。