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;
}