Выделяется память для массива указателей нежелательно освобождается - C (СИ)
Формулировка задачи:
Как вы видите, здесь выделяется память для массива указателей на "строки" analyzedTextArray[512], этот массив мне нужен для дальнейшей работы, а он зачем-то освобождается . . . . как сделать чтоб такого не происходило?
int getTextFromAnalyzedFile(char* analyzedFilePathName, char* analyzedTextArray[512]) { FILE *analyzedFile = NULL; char *analyzedFileWordArray; char readStatus = OUT; /* статус чтение OUT - вне слова(пробел, запятая) IN - в слове */ char word[256]; char ch; int length; int state; int wordLength = 0; int wordNum = 0; analyzedFile = fopen(analyzedFilePathName, "r"); if (analyzedFile == NULL) { printf("file %s not found\n", analyzedFilePathName); return -1; } else { printf("file %s is opened\n", analyzedFilePathName); } while (!feof(analyzedFile)) { ch = fgetc(analyzedFile); if (isAlphabetChar(&ch) == 0) { if (readStatus == IN) { if (wordNum != 0) { wordLength++; } word[wordLength] = ch; word[wordLength + 1] = '\0'; } if (readStatus == OUT) { wordNum++; wordLength = 0; word[wordLength] = ch; word[wordLength + 1] = '\0'; readStatus = IN; } } else { if (readStatus == IN) { analyzedTextArray[wordNum] = (char*)malloc(sizeof(char)*128); analyzedTextArray[wordNum] = word; printf("word = %s\n", word); // дебаг))) word[0] = '\0'; } readStatus = OUT; } } analyzedTextArray[wordNum + 1] = "NULL"; return 0; }
Решение задачи: «Выделяется память для массива указателей нежелательно освобождается»
textual
Листинг программы
analyzedTextArray[wordNum] = word;
Объяснение кода листинга программы
- В данном коде происходит выделение памяти под массив указателей на слова.
- Каждому слову в тексте присваивается уникальный номер в массиве указателей
wordNum
. - Значение переменной
word
представляет собой слово из текста, которое добавляется в массив указателейanalyzedTextArray
. - Значение переменной
wordNum
представляет собой индекс, по которому происходит добавление слова в массив указателейanalyzedTextArray
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д