TRI D'UNE CHAINE DE CARACTERES

Messages postés
32
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
4 décembre 2003
-
Messages postés
1
Date d'inscription
jeudi 5 novembre 2009
Statut
Membre
Dernière intervention
7 novembre 2009
-
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

Messages postés
1
Date d'inscription
jeudi 5 novembre 2009
Statut
Membre
Dernière intervention
7 novembre 2009

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
Messages postés
32
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
4 décembre 2003

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) ...
Messages postés
2
Date d'inscription
jeudi 6 mars 2003
Statut
Membre
Dernière intervention
21 mai 2019

Le code fonctionne tres bien avec des caracteres allant de a à z !
Messages postés
32
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
4 décembre 2003

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)...