Comparaison de chaines problématique avec la lettre p ?
bonjour,
Je viens sur le forum pour demander si quelqu'un a rencontré le même problème que moi en programmant sous MinGW sous Windows en C.
Je viens d'écrire ce petit programme de tri de tableau de pointeurs qui fonctionne (tri le tableau dans un ordre croissant) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
main()
{
/* Déclarations */
char INTRO[50]; /* chaîne pour l'introduction des données */
char *MOT[4]; /* Tableau des pointeurs sur les 10 chaînes */
char *PTEMP; /* pointeurs d'aide pour l'échange des pointeurs */
int I,J; /* indices courants */
/* Saisie des données et allocation dynamique de mémoire */
puts("Introduire 4 phrases terminées chaque fois"
" par un retour à la ligne :");
for (I=0; I<4; I++)
{
/* Lecture d'une phrase */
printf("Phrase %d : ",I);
gets(INTRO);
/* Réservation de la mémoire */
MOT[I] = malloc(strlen(INTRO)+1);
/* S'il y a assez de mémoire, ... */
if (MOT[I])
/* copier la phrase à l'adresse */
/* fournie par malloc, */
strcpy(MOT[I], INTRO);
else
{
/* sinon afficher un message d'erreur */
printf("\aPas assez de mémoire \n");
/* et quitter le programme. */
exit(-1);
}
}
/* Afficher le tableau donné */
puts("Contenu du tableau donné :");
for (I=0; I<4; I++) puts(MOT[I]);
/* Effacer les 10 mots un à un,
en suivant l'ordre lexicographique */
J=0;
/*PAIDE=MOT[I];*/
while (J<4)
{
printf("44 %d %d\n",I,J);
for (I=J;I<4;I++)
{
printf("47 %s %s %d %d\n",MOT[I],MOT[J],I,J);
if (*MOT[I]<*MOT[J])
{
PTEMP=MOT[J];
MOT[J]=MOT[I];
MOT[I]=PTEMP;
printf("54 %s %s %d %d\n",MOT[I],MOT[J],I,J);
/* printf("51 %s %s\n",MOT[I],PAIDE); */
} else
{
printf("58 non %d %d<\n",I,J);
}
}
J++;
}
/* Afficher le tableau résultat */
puts("Contenu du tableau résultat :");
for (I=0; I<4; I++) puts(MOT[I]);
return 0;
} |
Le problème que j'ai rencontré en l'utilisant c'est quand je rentre les mots "pilote" et "passager" il ne veut pas me les trier autrement dit il ne "voit " pas que "pilote " est supérieur à "passager" ...
J'ai testé avec d'autres mots j'ai pas le problème apparement seulement avec la lettre "p".
Trés curieux !!!
Si quelqu'un a l'explication merçi de me tenir au courant
A+