Проверьте, является ли строка палиндромом в C

У меня есть вопрос об этом коде, который я пишу для упражнения. Я должен проверить, является ли строка палиндромом. Я не могу изменить объявление функции. Функция возвращает 1 только тогда, когда все буквы одинаковы (например, «aaaa»), но если я назначаю предложение с другим палиндромом (например, «anna»), функция возвращает мне 0, Я не могу понять, почему это происходит. Спасибо!

char* cargar (char*);
int pali (char*);

int main()
{ 
   char*texto=NULL;
   texto=cargar(texto);
   int res=pali(texto);
   if(res==1){printf("\nPalindrome");}
   else printf("\nNot palindrome");

   return 0;
}

char* cargar (char*texto)
{
   char letra;
   int i=0;
   texto=malloc(sizeof(char));
   letra=getche();
   *(texto+i)=letra;
   while(letra!='\r'){
      i++;
      texto=realloc(texto,(i+1)*sizeof(char));
      letra=getche();
      *(texto+i)=letra;}
   *(texto+i)='\0';      
   return texto;
}

int pali (char* texto)
{
   int i;
   for(i=0;*(texto+i)!='\0';i++){
   }i--;
   if(i==0||i==1){return 1;}

   if(*texto==*(texto+i)){
      return pali(++texto);
   }
   else return 0;
}

Ответы на вопрос(3)

Ваш ответ на вопрос