begin process at 2012 05 28 23:00:06
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

Conversion des minuscules accentuées en minuscules sans accent : impossible ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Conversion des minuscules accentuées en minuscules sans accent : impossible ?

lundi 7 décembre 2009 à 21:06:44 | Conversion des minuscules accentuées en minuscules sans accent : impossible ?

ungars2

Bonjour,

voici les messages d'erreurs de GCC pour ce code (c'est juste un exemple) :

Line Location main.c:34: warning: multi-character character constant
Line Location main.c:34: warning: comparison is always false due to limited range of data type

Je sous mac os x : le problème est le même avec NetBeans ou Xcode...même si ce second permet de changer d'encodage de texte, ce que je n'ai pas trouvé pour le premier.

Les minuscules accentuées font tousser le compilateur, mais un code objet est produit. Mais qui ne donne rien à l'exécution : le texte reste comment il est : "èéà" reste éèà"... Je crois comprendre que GCC ne prend pas en compte le fait que le source soit en UTF-8. Et même çà ne donne rien de mieux :

gcc MajMin.c -o MajMin -fexec-charset=UTF-8 -finput-charset=UTF-8
gcc MajMin.c -o MajMin -fexec-charset=ISO-8859-1 -finput-charset=ISO-8859-1

J'ai beau avec TexWrangler sauvergarder en ISO-8859-1 ou en UTF-8 : rien à faire !

#include <stdio.h>
#define N 20

void MajToMin(char chaine[])
{
int i=0;
while(chaine[i]!='\0')
{
if(chaine[i]>=65 && chaine[i]<=90)
{
chaine[i]=chaine[i] + 32;
}
i++;
}
}

int STRLEN(char chaine[])
{
int i=0;
while (chaine[i] !='\0')
{
i++;
}
return i;
}


void Accent(char chaine[])
{
int x=0;
//int longueur=(STRLEN(chaine)-1);
while(chaine[x]!='\0')
{
if((chaine[x]=='é') || (chaine[x]=='è') || (chaine[x]=='ê') || (chaine[x]=='ë'))
{
chaine[x] = 'e';
}
else if((chaine[x] =='à') || (chaine[x] =='â') || (chaine[x] =='ä'))
{
chaine[x] ='a';
}
else if((chaine[x] =='ù') || (chaine[x] =='ü') || (chaine[x] =='û'))
{
chaine[x] ='u';
}
else if((chaine[x] =='î') || (chaine[x] =='í') || (chaine[x] =='ì') || (chaine[x] =='ï'))
{
chaine[x] ='i';
}

x++;
}



/* while(chaine[x]!='\0')
{
if(chaine[x]<0)
{
chaine[x]=chaine[x]+256;
}
x++;
}*/

}

int main (void)
{
char mot[N];
printf("Entrez un mot : \n ");
scanf("%s", mot);
MajToMin(mot);
printf("sans majuscule: %s \n", mot);
Accent(mot);
printf("sans majuscule ni accent: %s \n", mot);
return 0;
}
lundi 7 décembre 2009 à 22:12:55 | Re : Conversion des minuscules accentuées en minuscules sans accent : impossible ?

CptPingu

Administrateur CodeS-SourceS
Ce n'est pas un problème d'encoding UTF-8 de tes fichiers.

Un caractère qui n'est pas dans la table ASCII standard n'est pas codé pareil. Il tiendra sur plusieurs char (d'où l'erreur de gcc te disant warning: multi-character character constant => la lettre accentuée étant codé sur plus d'un char, gcc pense que tu lui donne une chaîne de caractère dans un guillement simple), ou sur un autre type de donné (par exemple wchar_t).

Si tu veux vraiment gérer des caractères spéciaux, regarde du côté des wide characters (caractères étendus).
http://en.wikipedia.org/wiki/Wide_character

Tu as d'ailleurs des méthodes spécifiques dans wchar.h.


Cette discussion est classée dans : int, mot, chaine, minuscules, if


Répondre à ce message

Sujets en rapport avec ce message

verification si le mot est palindrome [ par sdiri_med ] Salut Je n'ai pas arrivé à résoudre un problème de vérification d'une chaine de caractères. Le problème consiste à vérifier si un mot est palindrome Gestion de plusieurs ports RS232 [ par dissezfr ] Bonjour à tous d'abordJ'ai récupéré un code sur le site permettant de géré un port série, j'aimerai piloter 8 (voir +) ports série avec un seul ordina erreur bizzare [ par lektrosonic ] Bonjour, je code un programe en C sous Visual Studio.La chose qui est tres surprenante c est que quand je lance mon programe a partir de windows, il p ajout d'un element à la fin d'une liste chainée [ par beatkof ] bonsoir je voudrai faire une fonction qui ajout un element à la fion d'une liste chainée et je n'y arrive pas voila ma fonction: #include #include s ce code ne marche pas?????????? [ par banak3181 ] s'il vous plait les gars je veux que quelqu'un me disent pourquoi ce code ne marche sur dev C++:#include #include #include #include # include<myconio. lecture d'une chaine au clavier :probléme d'execution! [ par infofst ] Bonjour, je suis en train d'écrire un programme qui fait des opérations sur une date saisie au clavier. la lecture de date est en language assembleu Probleme morpion en SDL c++ [ par juju116 ] Salut tout le monde! j'expose donc mon souci pour l'instant mon programme affiche une image en fond d'ecran et bizarement cette image est bien chargé besoin d'aide sur communication [ par keast ] salut tout le monde, Voila je suis vraiment nul en info et j'ai un problème en ce moment sur un projet. Je dois piloté un appareil qui celui-ci fonct aide jeux par C [ par ousous09 ] voila, quand je compile ca me donne cette erreur size of indefined or zero j'ai rien compris voila mon programme en C #include #include #include mettre mon programme dans une boucle [ par flowneo ] bonjour, ce programme permet de donner le nombre de "e" dans un mot grâce à une fonction, mais il faudrait que je fasse une boucle pour qu'a chaque f


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,359 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales