Fixed:
Code:char **ftoarray(FILE *file)
{
size_t size, lines;
char **array, *whole, *delim;
fseek(file, 0, SEEK_SET);
fseek(file, 0, SEEK_END);
size = ftell(file)+1;
fseek(file, 0, SEEK_SET);
if(!(whole = malloc(size)))
return NULL;
whole[size-1] = '\0';
if(fread(whole, 1, size-1, file) != size)
{
free(whole);
return NULL;
}
for(lines = 0, delim = strtok(whole, "\n"); delim; delim = strtok(NULL, "\n"))
++lines;
if(!(array = malloc((lines+1) * sizeof(*array) + size)))
{
free(whole);
return NULL;
}
array[lines] = NULL; /* NULL terminator */
memcpy(array + lines + 1, whole, size);
free(whole);
for(size = 0, delim = array[lines + 1]; *delim; delim += strlen(delim) + 1, ++size)
array[size] = delim;
return array;
}
