C格式读取文件内容

来源:互联网 发布:数组名可以做形参吗 编辑:程序博客网 时间:2024/04/29 01:11
/**--------------------- 以下为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,避免野指针。

原创粉丝点击