Tri d'une chaine de caracteres

Soyez le premier à donner votre avis sur cette source.

Snippet vu 7 125 fois - Téléchargée 37 fois

Contenu du snippet

Tri d'une chaine de caracteres

Source / Exemple :


/*
  Name: 
  Copyright: 
  Author: 
  Date: 11/06/03 13:30
  Description: Tri d'une chaine de caracteres.

  • /
#include<stdio.h> #include<stdlib.h> #define MAX 50 char *tri(char *chaine,char *retour); main() { char chaine[MAX],retour[MAX]; printf("\n Entrez votre chaine :"); gets(chaine); printf("\n La chaine triee : %s",tri(chaine,retour)); getch(); } char *tri(char *chaine,char *retour) {int tab[26],i,j; char *ret; ret=retour; for(i=0;i<26;i++) tab[i]=0; i=0; while(chaine[i] != '\0') { j=(chaine[i]-'a'); tab[j]++; i++; } for(i=0;i<26;i++) { while(tab[i] != 0) {
  • ret = 'a'+i;
tab[i]--; ret++; } }
  • ret='\0';
return retour; }

A voir également

Ajouter un commentaire Commentaires
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)...

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.