Чтение всего текстового файла в массив символов в C

Я хочу прочитать содержимое текстового файла в массиве символов в C. Новые строки должны быть сохранены.

Как мне это сделать? Я нашел несколько решений C ++ в Интернете, но не решения только для C.

Edit: Теперь у меня есть следующий код:

void *loadfile(char *file, int *size)
{
    FILE *fp;
    long lSize;
    char *buffer;

    fp = fopen ( file , "rb" );
    if( !fp ) perror(file),exit(1);

    fseek( fp , 0L , SEEK_END);
    lSize = ftell( fp );
    rewind( fp );

    /* allocate memory for entire content */
    buffer = calloc( 1, lSize+1 );
    if( !buffer ) fclose(fp),fputs("memory alloc fails",stderr),exit(1);

    /* copy the file into the buffer */
    if( 1!=fread( buffer , lSize, 1 , fp) )
      fclose(fp),free(buffer),fputs("entire read fails",stderr),exit(1);

    /* do your work here, buffer is a string contains the whole text */
    size = (int *)lSize;
    fclose(fp);
    return buffer;
}

Я получаю одно предупреждение: warning: назначение делает указатель из целого числа без приведения. Это строка size = (int) lSize; . Если я запустил приложение, произойдет сбой.

Обновление: Приведенный выше код теперь работает. Я обнаружил segfault и отправил еще один вопрос. Спасибо за помощь.

30
задан unwind 19 February 2015 в 07:26
поделиться