Прочитать все содержимое файла на c char *, включая новые строки

Я ищу кроссплатформенное (Windows + Linux) решение для чтения содержимого всего файла вchar *.

Вот что я получил сейчас:

FILE *stream;
char *contents;
fileSize = 0;

//Open the stream
stream = fopen(argv[1], "r");

//Steak to the end of the file to determine the file size
fseek(stream, 0L, SEEK_END);
fileSize = ftell(stream);
fseek(stream, 0L, SEEK_SET);

//Allocate enough memory (should I add 1 for the \0?)
contents = (char *)malloc(fileSize);

//Read the file 
fscanf(stream, "%s", contents);     

//Print it again for debugging
printf("Read %s\n", contents);

К сожалению, это напечатает только первую строку в файле, поэтому я предполагаю, что fscanf останавливается на первом символе новой строки. Однако я хотел бы прочитать весь файл, включая и сохраняя символы новой строки. Я предпочитаю не использовать цикл while и realloc для создания вручную всей строки, я имею в виду, что должен быть более простой способ?

Ответы на вопрос(4)

Ваш ответ на вопрос