Salut J'ai appris en classe à propos de la bibliothèque string.h et plus particulièrement de la fonction strcmp qui compare les chaînes aux chaînes. et si la première chaîne apparaît en premier dans le dictionnaire, elle retournera un nombre supérieur à 0, si la deuxième chaîne est plus grande que la première, elle retournera un nombre inférieur à 0 et si elle est égale à 0. ive utilisé comme ceci:strcmp renvoyant seulement 0 (bug de palindrom algo)
strcmp(strArr , strrev(strArr));
ne hésitez pas à me renseigner.
Le code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LENGTH 100
#define PALINDROM_TRUE 0//because in strcmp if both strings compared are equile the strcmp will return 0.
int main(void)
{
char strArr[MAX_LENGTH];
printf("Enter string (max length 100 chars): ");
fgets(strArr , MAX_LENGTH , stdin);
int pali = strcmp(strArr , strrev(strArr));
if(pali == PALINDROM_TRUE)
{
printf("Palindrom\n");
}
else
{
printf("Not Palindrom\n");
}
system("PAUSE");
return 0;
}
mon problème est que le code ci-dessous quand je rentre à-dire « abc » il imprime à l'écran Palindrom qui devrait imprimer Non Palindrom, il imprime jamais Non Palindrom
Avez-vous essayé d'imprimer les valeurs de '' strArr' et strrev (strArr) 'pour vous assurer qu'ils ont les valeurs que vous attendez? –
damn ive a réussi à faire pali un 'int', désolé pour cela. – spyc
Votre "* fix *" pour le fonctionnement de 'strcmp()' est une source potentielle de confusion. Au lieu de cela, essayez quelque chose comme '#define strequal (x, y) (strcmp ((x), (y)) == 0)' et ensuite 'if (strequal (x, y) == true)' ... –