Выделяется память для массива указателей нежелательно освобождается - 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;

Объяснение кода листинга программы

  1. В данном коде происходит выделение памяти под массив указателей на слова.
  2. Каждому слову в тексте присваивается уникальный номер в массиве указателей wordNum.
  3. Значение переменной word представляет собой слово из текста, которое добавляется в массив указателей analyzedTextArray.
  4. Значение переменной wordNum представляет собой индекс, по которому происходит добавление слова в массив указателей analyzedTextArray.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.222 из 5
Похожие ответы