Potresti semplificarlo un poco, modificandolo così :
codice:
#include <stdlib.h> /* librerie standard */
#include <stdio.h> /* funzioni printf, scanf */
#include <string.h> /* librerie delle string */
#define LUNGHEZZA 50 /* lunghezza massima vettore */
/* Dichiarazioni Funzioni */
void toglispazi(char nuovo[], char vecchio[]); /*toglie spazi in una stringa*/
int palindroma(char nuovo[], int n);
/* Inizio del Main */
int main(void)
{
char vettore_input[LUNGHEZZA];/*input, vettore inserito dall utente che può comprendere spazi*/
char parola[LUNGHEZZA]; /*variabile di programma, il contenuto è copiato da vettore_input senza gli spazi*/
printf("Inserisci una parola o una frase senza usare segni di punteggiatura:\n\n---> "); /* inserimento */
fgets( vettore_input, LUNGHEZZA, stdin);
printf("\nLa stringa inserita e'->\n");
printf("%s\n", vettore_input); /* stampa a video */
toglispazi(parola, vettore_input); /* chiamata funzione - toglie eventuali spazi nella stringa*/
printf("\nLa stringa senza spazi e'->\n");
printf("%s\n", parola); /* stampa a video */
if (palindroma(parola, strlen(parola))==0)
printf("\nLa stringa non e' palindroma\n\n");
else
printf("\nLa stringa e' palindroma\n\n");
system("pause");
return(0); /* fine del main */
}
/* funzione calcola - togli spazi */
void toglispazi(char nuovo[], char vecchio[])
{
int i, j=0, len=strlen(vecchio); /* ciclo di conteggio */
/* non considero NESSUNO dei caratteri 'speciali' */
for(i=0; i<len; ++i)
if((vecchio[i]>='0' && vecchio[i]<='9') ||
(vecchio[i]>='A' && vecchio[i]<='Z') ||
(vecchio[i]>='a' && vecchio[i]<='z') )
nuovo[j++]=vecchio[i];
nuovo[j]='\0';
}
int palindroma(char *nuovo, int n)
{
if (n <= 1) return 1;
if (*nuovo != *(nuovo+n-1)) return 0;
return(palindroma(nuovo+1, n-2));
}