В ответ на предыдущий вопрос я столкнулся с некоторыми проблемами, связанными с выделением памяти для трехмерного массива.
Я работаю над проектом, в котором нам нужно поработать над текстом. Для этого нам нужно разбить текст на более мелкие разделы и обработать текст дословно. Чтобы сохранить эти небольшие фрагменты текста, у нас есть 3D-массив, список разделов, каждый из которых содержит список слов в разделе.
Но я получаю ошибку сегментации, когда пытаюсь выделить память для отдельных слов, используя malloc()
.
localText->list[i][n] = malloc(100 * sizeof(char));
Вот весь код.
typedef struct {
char name[100];
char ***list;
}text;
int main(){
int i = 0, n, z,wordCount, sections;
FILE *file;
text *localText;
openFile(&file, "test.txt");
wordCount = countWords(file);
sections = (wordCount / 50) + 1;
localText = malloc(sizeof(text));
localText->list = malloc(sections * sizeof(char **));
for(i = 0; i < sections; i++)
localText->list[i] = malloc(50 * sizeof(char *));
for(n = 0; n < 50; n++)
localText->list[i][n] = malloc(100 * sizeof(char));
readFileContent(file, localText->list, 50);
freeText(localText);
return 1;
}