Continuo a non capire. Non se ne deve occupare il tuo programma ... è la fgets che non lo oltrepassa ...
Esempio:
codice:
int main()
{
int i;
char parola[5];
fgets(parola,5,stdin);
for(i=0;i<strlen(parola);i++)
if(parola[i] != parola[strlen(parola)-i-1])
break;
if(i==strlen(parola))
cout << "Palindroma";
else
cout << "Non palindroma";
}
Al di là del codice banale buttato giù in 2 secondi...se io metto "anna" ok,la parola è palindroma...ma se metto "annaciao" la parola è palindroma lo stesso perchè giustamente la fgets tronca le parti in eccesso.
Io vorrei fare in modo che la fgets mi riconoscesse questo caso. (quando il buffer è minore della lunghezza della parola).
Altro esempio:
codice:
void StampaContrario(char parola[],int indice);
int main()
{
char parola[5];
cout << "Inserisci la parola ";
fgets(parola,5,stdin);
StampaContrario(parola,0);
return 0;
}
void StampaContrario(char parola[],int indice)
{
if (parola[indice+1]=='\0')
return;
StampaContrario(parola,++indice);
cout << parola[indice];
if(indice==1)
cout << parola[0];
}
Se do in input annaciao...in output ottengo solamente anna;se addirittura faccio così:
codice:
if (parola[indice+1]=='\n')
return;
ottengo una lunga sequenza di caratteri casuali..