Bootstrap

C语言一次性读取文件全部内容

关键是获取文件大小,知道文件大小就可以用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;
}


;