C格式讀取文件內容

/**--------------------- 以下爲C格式讀取文件 -----------------------**/


/*******************************************************************
 * 功能: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,避免野指針。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章