Normaliser des lettres

firas scofield Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   -  
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   -
salut

je veux corriger lettres d'un mot de façon que lorsque je trouve un caractere comme(é,è) je le remplace par 'e'

et à par 'a' ....

j'ai essayer avec ce code mais n'a pas marché
void conv(char mot[27])
{
    int i;
        for(i=0;i<strlen(mot);i++)
     switch(mot[i])
     {
case 'à':case 'á':case 'â' :case 'ã': case'ä' :case 'å':
        mot[i]='a';
        case 'ç':
    mot[i]='c';
    case 'è':case 'é':case 'ê' :case 'ë':
        mot[i]='e';
        case 'î':case 'í':case 'ì' :
         mot[i]='i';
        case 'ò':case 'ó':case 'õ' :case 'ö':
            mot[i]='o';
        case 'ú':case 'û':case 'ü' :
            mot[i]='u';
             case 'ñ':
                 mot[i]='n';
             default:
                mot[i]=toupper(mot[i]);
     }
     for(i=0;i<strlen(mot);i++)
        mot[i]=toupper(mot[i]);
}

2 réponses

[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
Salut firas scofield,

C'est quoi que tu normalises : la saisie ? Tu récupères une saisie en Unicode ?


Dal
0
firas scofield Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
c'est à dire lorsque je saisie une chaine de caractere comme 'aprés' il me retourne 'apres' , .... je veut eliminer tous les lettres speciaux comme é,è,à... et les remplacer par des lettres alphabetique e,a..
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Bonjour,

Tu peux aussi passer par 2 tableaux :
char source[]="àéèêë...";
char destination[]="aeeee...";

Et ensuite tu fais une boucle for sur tous les caractères de source, et tu remplaces source[i] par destination[i] dans la chaîne de caractères de ton choix (tu peux utiliser la fonction strchr()).

Sinon, attention à la gestion des caractères... Quel encodage utilises-tu ?
Cdlt,
0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
@faiddy : salut fiddy, bonne idée !

@firas : il faut que ton terminal avec lequel tu récupères la saisie utilise le même encodage de caractères que ton code source, sinon, tu vas comparer des choses différentes. Là ce que tu as copié sur le forum semble être de l'Unicode (ou du moins c'est comme cela que CCM l'envoie à mon navigateur), et ton code n'est pas conçu pour traiter de l'Unicode et ne compile pas chez moi car ces caractères Unicode sont encodés sur plus d'un char...

En supposant que ta saisie n'est pas en Unicode, et que chaque caractère que tu récupères par la saisie est encodé sur un seul char, pour simplifier, tu pourrais faire la chose suivante :
- faire un programme où tu saisis à la ligne de commande ces caractères accentués,
- et qui affiche la valeur numérique du char correspondant, que tu notes
- utiliser ensuite ces valeurs numériques dans ton programme pour normaliser ta saisie

Ta normalisation fonctionnera sur ton poste et sur tous les postes où le terminal utilise le même encodage.

Sous Windows tu détermines l'encodage actuellement utilisé par le terminal CMD en utilisant la commande chcp. Tu peux éventuellement aussi trouver ces codes avec des tables affichant les codes pour le "code page" utilisé par Windows.


Dal
0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
@fiddy : salut fiddy, bonne idée !

@firas : il faut que ton terminal avec lequel tu récupères la saisie utilise le même encodage de caractères que ton code source, sinon, tu vas comparer des choses différentes. Là ce que tu as copié sur le forum semble être de l'Unicode (ou du moins c'est comme cela que CCM l'envoie à mon navigateur), et ton code n'est pas conçu pour traiter de l'Unicode et ne compile pas chez moi car ces caractères Unicode sont encodés sur plus d'un char...

En supposant que ta saisie n'est pas en Unicode, et que chaque caractère que tu récupères par la saisie est encodé sur un seul char, pour simplifier, tu pourrais faire la chose suivante :
- faire un programme où tu saisis à la ligne de commande ces caractères accentués,
- et qui affiche la valeur numérique du char correspondant, que tu notes
- utiliser ensuite ces valeurs numériques dans ton programme pour normaliser ta saisie avec le procédé de ton choix (switch/case ; tableaux de substitutions ...)

Ta normalisation fonctionnera sur ton poste et sur tous les postes où le terminal utilise le même encodage.

Sous Windows tu détermines l'encodage actuellement utilisé par le terminal CMD en utilisant la commande chcp. Tu peux éventuellement aussi trouver ces codes avec des tables affichant les codes pour le "code page" utilisé par Windows.


Dal
0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
@faiddy : salut fiddy, bonne idée !

@firas : il faut que ton terminal avec lequel tu récupères la saisie utilise le même encodage de caractères que ton code source, sinon, tu vas comparer des choses différentes. Là ce que tu as copié sur le forum semble être de l'Unicode (ou du moins c'est comme cela que CCM l'envoie à mon navigateur), et ton code n'est pas conçu pour traiter de l'Unicode et ne compile pas chez moi car ces caractères Unicode sont encodés sur plus d'un char...

En supposant que ta saisie n'est pas en Unicode, et que chaque caractère que tu récupères par la saisie est encodé sur un seul char, pour simplifier, tu pourrais faire la chose suivante :
- faire un programme où tu saisis à la ligne de commande ces caractères accentués,
- et qui affiche la valeur numérique du char correspondant, que tu notes
- utiliser ensuite ces valeurs numériques dans ton programme pour normaliser ta saisie avec le procédé de ton choix (switch/case, méthode de fiddy,...)

Ta normalisation fonctionnera sur ton poste et sur tous les postes où le terminal utilise le même encodage.

Sous Windows tu détermines l'encodage actuellement utilisé par le terminal CMD en utilisant la commande chcp. Tu peux éventuellement aussi trouver ces codes avec des tables affichant les codes pour le "code page" utilisé par Windows.


Dal
0