AFFICHER DES CARACTÈRES SPÉCIAUX(ACCENTS, ...)

cs_PiX3L Messages postés 102 Date d'inscription dimanche 27 juillet 2003 Statut Membre Dernière intervention 13 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.

https://codes-sources.commentcamarche.net/source/23372-afficher-des-caracteres-speciaux-accents

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és 2 Date d'inscription samedi 1 décembre 2012 Statut Membre Derniè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és 2 Date d'inscription samedi 1 décembre 2012 Statut Membre Derniè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és 2 Date d'inscription dimanche 7 octobre 2007 Statut Membre Dernière intervention 18 novembre 2009
18 nov. 2009 à 23:01
Si ca vous embete de taper toujours des \x86 ou des %c, regardez cette fonction qui affiche bien les phrases avec des é, è, ê, etc.
http://www.cppfrance.com/codes/ACCENTS-AIGUS-AUTRES-PONCTUATIONS_50869.aspx
Remi D Messages postés 3 Date d'inscription lundi 31 octobre 2005 Statut Membre Dernière intervention 12 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és 316 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 1 février 2010 1
19 avril 2006 à 00:36
133 je dirais
val3113 Messages postés 22 Date d'inscription lundi 23 juin 2003 Statut Membre Derniè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és 316 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 1 février 2010 1
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és 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
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és 22 Date d'inscription lundi 23 juin 2003 Statut Membre Derniè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és 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
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és 22 Date d'inscription lundi 23 juin 2003 Statut Membre Derniè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és 316 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 1 février 2010 1
15 nov. 2004 à 22:59
heu sinon y'a la calculatrice en mode scientifique ... :p
cs_cdesroch Messages postés 16 Date d'inscription mercredi 12 mars 2003 Statut Membre Dernière intervention 10 janvier 2007
11 nov. 2004 à 03:32
En fait, tu l'avait calculé en binaire pyronet !! :-)
pyronet Messages postés 24 Date d'inscription samedi 14 février 2004 Statut Membre Derniè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és 20 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 27 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és 316 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 1 février 2010 1
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és 24 Date d'inscription samedi 14 février 2004 Statut Membre Derniè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és 24 Date d'inscription samedi 14 février 2004 Statut Membre Derniè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és 51 Date d'inscription lundi 7 juin 2004 Statut Membre Dernière intervention 15 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és 51 Date d'inscription lundi 7 juin 2004 Statut Membre Dernière intervention 15 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és 316 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 1 février 2010 1
7 juin 2004 à 14:48
merci pour cette liste victorcoasne [:)]
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
4 juin 2004 à 16:49
Pour Dev-C++ :

ü : \x81
é : \x82
â : \x83
ä : \x84
à : \x85
ç : \x87
ê : \x88
ë : \x89
è : \x8A
ï : \x8B
î : \x8C
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
4 juin 2004 à 16:43
Désolé moi ça m'affiche "prèsentation..." !

Avec dev-C++
capoueidiablo Messages postés 316 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 1 février 2010 1
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és 102 Date d'inscription dimanche 27 juillet 2003 Statut Membre Dernière intervention 13 août 2005 1
3 juin 2004 à 20:05
Ou alors sous la forme \xxx où le xxx correspond au code octal du caractère
Rejoignez-nous