TRI D'UNE CHAINE DE CARACTERES

gillig Messages postés 32 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 4 décembre 2003 - 22 oct. 2003 à 15:08
jingel2009 Messages postés 1 Date d'inscription jeudi 5 novembre 2009 Statut Membre Dernière intervention 7 novembre 2009 - 7 nov. 2009 à 16:40
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/17248-tri-d-une-chaine-de-caracteres

jingel2009 Messages postés 1 Date d'inscription jeudi 5 novembre 2009 Statut Membre Dernière intervention 7 novembre 2009
7 nov. 2009 à 16:40
Comment faire afficher une chaine de caractere un à un en C sous
linux je connais en pascal mais pas en C;mon probleme ce ke je
utilise le fonction delay et il attend et après affiche tous
les caractere mais pas un à un.Merci de votre aide
gillig Messages postés 32 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 4 décembre 2003
27 oct. 2003 à 17:07
C'est ce que je dis, le code fonctionne, mais il ne fonctionne QU'avec des caractères de 'a' à 'z' !

Si on rentre un espace, une majuscule ou un chiffre par exemple :
- ce caractère ne va pas être restitué dans la chaine triée retournée, ce qui n'est pas encore trop grave, même si on peut s'étonner qu'il disparaisse...
- le plus grave, c'est que le programme écrit dans de la mémoire qui ne lui appartient pas (tab[j]++; avec j hors limite) ...
gochardl Messages postés 2 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 21 mai 2019
24 oct. 2003 à 15:48
Le code fonctionne tres bien avec des caracteres allant de a à z !
gillig Messages postés 32 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 4 décembre 2003
22 oct. 2003 à 15:08
Sans l'avoir testé, j'ai l'impression que ce code est buggé : dans la boucle de remplissage de "tab", pour des caractères < 'a', j < 0 ! Pour des caractères > 'z', j > 25 et on est à nouveau hors-tableau !

Si tu veux conserver cet algo, y'a 2 solutions : allouer 256 caractères pour "tab" (=> taux d'utilisation de la mémoire allouée assez faible, mais bon ça ne fait qu'1 Ko), ou bien vérifier que j est dans les bonnes limites (=> tu laisse tomber les caractères en dehors des limites)...