关键是获取文件大小,知道文件大小就可以用fread一次读入内存中。
使用fseek()定位到文件末尾,ftell()计算当前文件位置指针相对于文件首的偏移字节数,也就是文件的大小,最后用rewind()重新定位到文件开头位置,ok!fread()搞定。我下面这个函数写的不怎么好,大家理解思想就行了。
/**
* 读取文件内容
* path:文件路径
* length:文件大小(out)
* return:文件内容
*/
char * ReadFile(char * path, int *length)
{
FILE * pfile;
char * data;
pfile = fopen(path, "rb");
if (pfile == NULL)
{
return NULL;
}
fseek(pfile, 0, SEEK_END);
*length = ftell(pfile);
data = (char *)malloc((*length + 1) * sizeof(char));
rewind(pfile);
*length = fread(data, 1, *length, pfile);
data[*length] = '\0';
fclose(pfile);
return data;
}