Estou fazendo um programa para verificar se determinadas palavras são Palíndromo. Porem estou com problemas na comparação logica que esta sempre me retornando falso. Minha primeira linguagem é Java e estou aprendendo C na faculdade.
Meu codigo:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define bool short
#define true 1
#define false 0
#define equals(a, b) (((srtcmp(a, b) == 0 ) ? true : false))
#define NUMENTRADA 1000
#define TAMLINHA 1000
bool isFim (char* s){
return (strlen(s) >= 3 && s[0] == 'F' && s[1] == 'I' && s[2] == 'M');
}
int isPalindromo(char* s){
int meio = strlen(s)/2;
int indc = strlen(s) - 1;
int resp = 1;
for (int i = 0 ; i < meio ; i++){
resp = resp && (s[i] == s[indc]);
indc--;
// printf("VALOR ======= >> %c \n", s[i]);
}
// printf("\n---------------------------\n");
// printf("BOOL ======= >> %d \n", resp);
// printf("\n---------------------------\n");
return resp;
}
int main (int argc, char** argv){
char entrada [NUMENTRADA][TAMLINHA];
int numEntrada = 0;
do{
fgets(entrada[numEntrada], TAMLINHA, stdin);
} while (isFim(entrada[numEntrada++]) == false);
numEntrada--;
for (int i = 0; i < numEntrada ; i++){
if(isPalindromo(entrada[i]) == true){
printf("SIM\n");
} else {
printf("NAO\n");
}
}
}
A entrada de dados esta sendo feita por redirecionamento de entrada e saída. Exemplo do arquivo de entrada de dados:
aça
acaçá
Ada
afã
aia
ala
ama
Ana
anilina
ara
arara
asa
ata
aviva
ele
esse
mamam
mamam
matam
metem
oco
omissíssimo