cs_PiX3L
Messages postés102Date d'inscriptiondimanche 27 juillet 2003StatutMembreDernière intervention13 août 2005
-
3 juin 2004 à 20:05
leqmc4 -
11 janv. 2014 à 04:28
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
super astuce, ça fait un moment que je me cassais la tête pour trouver une solution, ça ne marche peut-être pas partout mais je ne code que pour moi alors ça ira très bien!
Merci :)
lahmidi007
Messages postés2Date d'inscriptionsamedi 1 décembre 2012StatutMembreDernière intervention 1 décembre 2012 1 déc. 2012 à 23:18
pour être plus clair!! pour afficher des caractères spéciaux ou bien accentués il vous faut une table ASCII que vus devez télécharger sur google...voici un lien pour cette tâche:
http://profgeii.free.fr/explorer/ii1/ASCII.pdf***c'est un PDF
puis vous pouviez choisir entre 4 manières différentes pour réaliser ce but:
1)-syntaxe:'\x' suivi du code hexadécimal du caractère voulu(vous allez trouvez ce code hexadécimal sur la table ASCII ).
ex: printf("Pr\x82sentation");..ça affiche présentation là \x82 remplace le caractère non imprimable "é".
2)-la deuxième méthode consiste à représenter le caractère par son code octal(si vous le saviez sinon vous vous contentez de la première méthode)comme suit:"\xxx" où "xxx" est le code octal.
ex:printf("Pr\202sentation");..."\202" représente "é"(202 est le code octal de é).
3)cette méthode utilise aussi le code octal mais précédé d'un tout petit 0 et le caractère est définit en tant qu'un "char".
ex:printf("pr%csentation",0202);
4)vous devez savoir le code décimal du caractère (c'est aussi mentionné sur la table ASCII),cette méthode a le même principe que 3.
ex:printf("pr%csentation",130);...130 est la représentation décimal de é.
un grand merci à tout ceux qui ont participé a cette conversation constructif que j'ai employé pour donner cette modeste réponse que j’espère être utile pour tout les débutants comme moi ;)....
un p'tit merci me fera du b1...a+
lahmidi007
Messages postés2Date d'inscriptionsamedi 1 décembre 2012StatutMembreDernière intervention 1 décembre 2012 1 déc. 2012 à 19:35
merci c'etait tes utile pour moi!! ;)...chui un debutant :p
gmorris
Messages postés2Date d'inscriptiondimanche 7 octobre 2007StatutMembreDernière intervention18 novembre 2009 18 nov. 2009 à 23:01
Remi D
Messages postés3Date d'inscriptionlundi 31 octobre 2005StatutMembreDernière intervention12 mai 2007 29 mai 2007 à 14:15
Cette astuce, ne marche pas sur tout les systèmes, en particulier pour moi, sur une UNIX (solaris) à la compilation, gcc me dit : "hex escape out of range" et me supprime le caractère.
Je pense qu'il s'agit assez simplement qu'il ne gère 'que' l'ASCII 7bit et utilise le bit de parité.
Si quelqu'un peut confirmer...
PS : Je suis désolé de faire remonter un vieux topic, mais étant donnée qu'il arrive en tête des résultats sur google pour le problème des caractères accentués en C, je pensais qu'il valait le coup de le compléter.
capoueidiablo
Messages postés316Date d'inscriptionjeudi 9 janvier 2003StatutMembreDernière intervention 1 février 20101 19 avril 2006 à 00:36
133 je dirais
val3113
Messages postés22Date d'inscriptionlundi 23 juin 2003StatutMembreDernière intervention 9 juin 2007 15 avril 2006 à 19:50
J'pense que je vais utiliser la 2e solution (la 1re prend trop d'place :) ) merci pour tout, au fait avec %c ce serait quoi pour un 'à' ?
capoueidiablo
Messages postés316Date d'inscriptionjeudi 9 janvier 2003StatutMembreDernière intervention 1 février 20101 15 avril 2006 à 19:01
Plus simple:
printf("pr%cc%cdent", 130, 130);
%c indique que l'on va placer un caractère dans la chaine, si on voulais ajouter une chaine de caractère on aurai mis %s, pour un int %d ...
victorcoasne
Messages postés1101Date d'inscriptionjeudi 24 avril 2003StatutMembreDernière intervention23 juillet 20237 14 avril 2006 à 23:42
Au lieu d'un printf t'en fais plusieurs c'est aussi simple que ça :
printf("pr\x82");
printf("c\x82");
pritnf("dent");
En C++ ça donne :
cout << "Pr\x82" << "c\x82" << "dent";
Bonne prog,
@++
val3113
Messages postés22Date d'inscriptionlundi 23 juin 2003StatutMembreDernière intervention 9 juin 2007 13 avril 2006 à 19:13
C'est bien gentil de me dire ca, mais euh, c'est exactement ce que je dis dans mon message et je demande justement comment séparer le "\x82" du "c" sans modifier mon affichage, donc la ca m'aide pas beaucoup je savais déja ce que tu m'a dit
victorcoasne
Messages postés1101Date d'inscriptionjeudi 24 avril 2003StatutMembreDernière intervention23 juillet 20237 12 avril 2006 à 18:23
Si tu veux il faut séparer le 'c' du \x82 et le 'd' car \x82 est un code hexadécimal et que le hexa va de 0 à F en passant par 9 et A.
val3113
Messages postés22Date d'inscriptionlundi 23 juin 2003StatutMembreDernière intervention 9 juin 2007 12 avril 2006 à 16:22
Bonjour, tout le monde, j'ai justement besoin de mettre des 'é' dans mes printf et j'avais déja trouvé le \x82, cependant il ne marche pas toujours, pas par exemple pour précédent
-> pr\x82c\x82dent , ca ne marche pas parceque pourle 1er 'é' il ne prend pas comme code 82 mais bien 82c, comment j'pourrais faire ??
merci de votre aide
capoueidiablo
Messages postés316Date d'inscriptionjeudi 9 janvier 2003StatutMembreDernière intervention 1 février 20101 15 nov. 2004 à 22:59
heu sinon y'a la calculatrice en mode scientifique ... :p
cs_cdesroch
Messages postés16Date d'inscriptionmercredi 12 mars 2003StatutMembreDernière intervention10 janvier 2007 11 nov. 2004 à 03:32
En fait, tu l'avait calculé en binaire pyronet !! :-)
pyronet
Messages postés24Date d'inscriptionsamedi 14 février 2004StatutMembreDernière intervention 3 mai 2006 10 juin 2004 à 08:25
En effet... j'ai ressorti mes cours ça a rafraïchi ma mémoire... désolé pour ceux que j'aurai pu induire en erreur...
Gord21_cs
Messages postés20Date d'inscriptionmercredi 18 décembre 2002StatutMembreDernière intervention27 mai 2008 9 juin 2004 à 13:10
pyronet,
je crois que tu fais une confusion :
100 en octal fait bien 64 en décimal (1*8^2+0*8+0*1)
64 en hexa fait 100 en décimal (6*16+4*1) soit 144 en octal
capoueidiablo
Messages postés316Date d'inscriptionjeudi 9 janvier 2003StatutMembreDernière intervention 1 février 20101 8 juin 2004 à 10:55
Voila plein de Zouli-infos merci tout le monde [:p]
Si des choses n'ont pas encore été dites ...
pyronet
Messages postés24Date d'inscriptionsamedi 14 février 2004StatutMembreDernière intervention 3 mai 2006 7 juin 2004 à 21:27
euh... je suis pas trop d'accord avec ce que tu dis la... désolé si je détourne le sujet mais 100 en octal je dirais que ça fait plutôt 4 mais certainement pas 64 ou alors là il me faut des explications (j'en perdrait ma logique ?) Pour moi l'octal sur trois bits permet de représenter des nb décimaux de 0 à 7 donc pour représenter 64 il faudrait quelques bits en plus... et si tu voulait représenter 64 en binaires là c'est 0100 0000. Voila pour ma participation, dis moi si je ne t'ai pas compris Khayyam...
pyronet
Messages postés24Date d'inscriptionsamedi 14 février 2004StatutMembreDernière intervention 3 mai 2006 7 juin 2004 à 21:26
euh... je suis pas trop d'accord avec ce que tu dis la... désolé si je détourne le sujet mais 100 en octal je dirais que ça fait plutôt 4 mais certainement pas 64 ou alors là il me faut des explications (j'en perdrait ma logique ?) Pour moi l'octal sur trois bits permet de représenter des nb décimaux de 0 à 7 donc pour représenter 64 il faudrait quelques bits en plus... et si tu voulait représenter 64 en binaires là c'est 0100 0000. Voila pour ma participation, dis moi si je ne t'ai pas compris Khayyam...
cs_khayyam
Messages postés51Date d'inscriptionlundi 7 juin 2004StatutMembreDernière intervention15 juillet 2005 7 juin 2004 à 17:50
juste une petite précision : un code précédé de x n'est pas octal mais hexadécimal. je suis sûr que c'est ce que tu voulais dire.
mais si vous ne connaissez que le code octal, l'affichage se fait en faisant précéder le nombre de 0.
printf("%c", 0100); affichera @ qui est le caractère ascii 64 soit 100 en octal.
cs_khayyam
Messages postés51Date d'inscriptionlundi 7 juin 2004StatutMembreDernière intervention15 juillet 2005 7 juin 2004 à 17:24
je vous propose autre chose :
tout le monde possède une table de codes ascii, alors ...
printf("%c", 130); vous affichera "é"
capoueidiablo
Messages postés316Date d'inscriptionjeudi 9 janvier 2003StatutMembreDernière intervention 1 février 20101 7 juin 2004 à 14:48
merci pour cette liste victorcoasne [:)]
victorcoasne
Messages postés1101Date d'inscriptionjeudi 24 avril 2003StatutMembreDernière intervention23 juillet 20237 4 juin 2004 à 16:49
Pour Dev-C++ :
ü : \x81
é : \x82
â : \x83
ä : \x84
à : \x85
ç : \x87
ê : \x88
ë : \x89
è : \x8A
ï : \x8B
î : \x8C
victorcoasne
Messages postés1101Date d'inscriptionjeudi 24 avril 2003StatutMembreDernière intervention23 juillet 20237 4 juin 2004 à 16:43
Désolé moi ça m'affiche "prèsentation..." !
Avec dev-C++
capoueidiablo
Messages postés316Date d'inscriptionjeudi 9 janvier 2003StatutMembreDernière intervention 1 février 20101 3 juin 2004 à 23:20
[:D] merci pour ta contribution PiX3L
Si tu as d'autres "trucs" hésite pas je suis preneur [:D]
cs_PiX3L
Messages postés102Date d'inscriptiondimanche 27 juillet 2003StatutMembreDernière intervention13 août 20051 3 juin 2004 à 20:05
Ou alors sous la forme \xxx où le xxx correspond au code octal du caractère
Modifié par leqmc4 le 11/01/2014 à 04:28
Merci :)
1 déc. 2012 à 23:18
http://profgeii.free.fr/explorer/ii1/ASCII.pdf***c'est un PDF
puis vous pouviez choisir entre 4 manières différentes pour réaliser ce but:
1)-syntaxe:'\x' suivi du code hexadécimal du caractère voulu(vous allez trouvez ce code hexadécimal sur la table ASCII ).
ex: printf("Pr\x82sentation");..ça affiche présentation là \x82 remplace le caractère non imprimable "é".
2)-la deuxième méthode consiste à représenter le caractère par son code octal(si vous le saviez sinon vous vous contentez de la première méthode)comme suit:"\xxx" où "xxx" est le code octal.
ex:printf("Pr\202sentation");..."\202" représente "é"(202 est le code octal de é).
3)cette méthode utilise aussi le code octal mais précédé d'un tout petit 0 et le caractère est définit en tant qu'un "char".
ex:printf("pr%csentation",0202);
4)vous devez savoir le code décimal du caractère (c'est aussi mentionné sur la table ASCII),cette méthode a le même principe que 3.
ex:printf("pr%csentation",130);...130 est la représentation décimal de é.
un grand merci à tout ceux qui ont participé a cette conversation constructif que j'ai employé pour donner cette modeste réponse que j’espère être utile pour tout les débutants comme moi ;)....
un p'tit merci me fera du b1...a+
1 déc. 2012 à 19:35
18 nov. 2009 à 23:01
http://www.cppfrance.com/codes/ACCENTS-AIGUS-AUTRES-PONCTUATIONS_50869.aspx
29 mai 2007 à 14:15
Je pense qu'il s'agit assez simplement qu'il ne gère 'que' l'ASCII 7bit et utilise le bit de parité.
Si quelqu'un peut confirmer...
PS : Je suis désolé de faire remonter un vieux topic, mais étant donnée qu'il arrive en tête des résultats sur google pour le problème des caractères accentués en C, je pensais qu'il valait le coup de le compléter.
19 avril 2006 à 00:36
15 avril 2006 à 19:50
15 avril 2006 à 19:01
printf("pr%cc%cdent", 130, 130);
%c indique que l'on va placer un caractère dans la chaine, si on voulais ajouter une chaine de caractère on aurai mis %s, pour un int %d ...
14 avril 2006 à 23:42
printf("pr\x82");
printf("c\x82");
pritnf("dent");
En C++ ça donne :
cout << "Pr\x82" << "c\x82" << "dent";
Bonne prog,
@++
13 avril 2006 à 19:13
12 avril 2006 à 18:23
12 avril 2006 à 16:22
-> pr\x82c\x82dent , ca ne marche pas parceque pourle 1er 'é' il ne prend pas comme code 82 mais bien 82c, comment j'pourrais faire ??
merci de votre aide
15 nov. 2004 à 22:59
11 nov. 2004 à 03:32
10 juin 2004 à 08:25
9 juin 2004 à 13:10
je crois que tu fais une confusion :
100 en octal fait bien 64 en décimal (1*8^2+0*8+0*1)
64 en hexa fait 100 en décimal (6*16+4*1) soit 144 en octal
8 juin 2004 à 10:55
Si des choses n'ont pas encore été dites ...
7 juin 2004 à 21:27
7 juin 2004 à 21:26
7 juin 2004 à 17:50
mais si vous ne connaissez que le code octal, l'affichage se fait en faisant précéder le nombre de 0.
printf("%c", 0100); affichera @ qui est le caractère ascii 64 soit 100 en octal.
7 juin 2004 à 17:24
tout le monde possède une table de codes ascii, alors ...
printf("%c", 130); vous affichera "é"
7 juin 2004 à 14:48
4 juin 2004 à 16:49
ü : \x81
é : \x82
â : \x83
ä : \x84
à : \x85
ç : \x87
ê : \x88
ë : \x89
è : \x8A
ï : \x8B
î : \x8C
4 juin 2004 à 16:43
Avec dev-C++
3 juin 2004 à 23:20
Si tu as d'autres "trucs" hésite pas je suis preneur [:D]
3 juin 2004 à 20:05