Как исправить ошибку при использовании дека при поиске палиндрома? Как в этом случае можно использовать дек по другому?

В отчете об ошибках указывает на то что индекс вышел за пределы массива, но не указывает какой массив и какой индекс. Как можно решить данную проблему или есть иной способ решения задачи через дек?

void processing(char* fname_i, char* fname_r)
{
    FILE* in, * out;        //исходный и результирующий файлы (потоки)
    char st_in[RAZ];        //обрабатываемая строка
    char st_out[RAZ];       //результирующая строка
    char* p = new char(RAZ);    //указатель на выделенное слово
    int deqsize, i, flag, size, j;
    in = fopen(fname_i, PR_R);      //открываем файл на чтение
    out = fopen(fname_r, PR_W); //открываем файл на запись
    fgets(st_in, RAZ, in);      //читаем первую строку из файла in
    while (!feof(in))           //пока не найден признак конца файла
    {
        st_out[0] = '\0';           //очищаем результирующую строку
        p = strtok(st_in, " \n");   //выделяем первое слово (лексему).
        while (p)
        {
            deqsize = strlen(p);
            deque<string> myDeque(deqsize);
            for (i = 0; i < deqsize; i++)
            {
                myDeque[i] = p[i];
            }
            size = myDeque.size();
            j = 0;
            while (j < size)
            {
                if (myDeque[j] == myDeque[(size - 1)- j])
                {
                    j++;
                }
            }
            if (j == size - 1)
            {
                for (i = 0; i < size; i++)
                {
                    strcat(st_out, p);
                }
                strcat(st_out, " ");        //добавляем пробел между слов
            }
           
            p = strtok(NULL, " \n");        //выделение последующих слов NULL
            myDeque.clear();
        }
        st_out[strlen(st_out) - 1] = '\0';  //убираем последний пробел
        if (strlen(st_out))             //если строка не пустая
            fprintf(out, "%s\n", st_out);   //записываем строку в новый файл
        fgets(st_in, RAZ, in);
    }
}

Ответы (0 шт):