Я читаю все содержимое файла в массив символов успешно.Затем я хочу сохранить эти данные в структуре.
Я уверен, что инициализация массива в структуре до миллиона неверна, но файл велик, и ему требуется от 500 КБ до 1 м байт.
struct ArrayStoredInHeap
{
char entireFile[1000000];
};
Сохранение файла в массив char ниже работает, если я использую файл меньшего размера и изменяю вышеупомянутый массив struct char на гораздо меньший размер контейнера.
char *GetFileContent(char *filePath)
{
char *buffer = NULL;
size_t size = 0;
FILE *file = fopen(filePath, "r");
fseek(file, 0, SEEK_END);
size = ftell(file);
rewind(file);
buffer = malloc((size + 1) * sizeof(*buffer));
fread(buffer, size, 1, file);
buffer[size] = '\0';
return buffer;
}
Проблема, кроме явно неправильной инициализации массива структуры, заключается в том, что всякий раз, когда я использую файл большего размера, я получаю исключение переполнения стека при инициализации myStruct
int main (void)
{
char *file = {"file1.txt", "file2.txt", "file3.txt"};
int numberOfFiles = strlen(file);
struct ArrayStoredInHeap myStruct[numberOfFiles];
for(int i = 0; i < numberOfFiles; i++)
{
struct ArrayStoredInHeap tmpStruct;
strcpy(tmpStruct.entireFile, GetFileContent(&file[i]));
myStruct[i] = tmpStruct;
}
for(int i = 0; i < numberOfFiles; i++)
{
printf("%s \n", myStruct[i].entireFile);
}
return 0;
}