Te doy una idea. Supongamos el siguiente palíndromo (sin acentos ni signos ortográficos para simplificar): "DABALE ARROZ A LA ZORRA EL ABAD".
Por la definición de palíndromo, sabemos que la primera letra es igual a la última; la segunda, igual a la penúltima; la tercera, igual a la antepenúltima, etc. Tonz:
char szPal[STR_SIZE];
memset(szPal, 0, STR_SIZE);
strcpy(szPal, "DABALE ARROZ A LA ZORRA EL ABAD");
entonces es evidente que:
szPal[0] == szPal(strlen(szPal) - 1);
szPal[1] == szPal(strlen(szPal) - 2);
szPal[3] == szPal(strlen(szPal) - 3);
Si empleas una variable para contar, entonces es cierto que:
int n = 0;
szPal[n] == szPal(strlen(szPal) - n - 1);
n++;
szPal[n] == szPal(strlen(szPal) - n - 1);
¿capizcas? El prob. ya está resuelto al 70%. Ahora tienes que hacer que se recorra todas las letras. En particular, tienes que tener especial cuidado en la letra central. Además