pgl10
Messages postés387Date d'inscriptionsamedi 18 décembre 2004StatutNon membreDernière intervention 3 septembre 202411 19 nov. 2009 à 11:28
J'utilise depuis bien longtemps le code suivant :
#include <stdlib.h>
#include <stdio.h>
int main ()
{
int i;
char c;
printf("\nEntrez un caract%cre : ",0x8A);
i=getchar();
c=(char)i;
printf("\nPour %c le code hexad%ccimal est : \\x%x \n",c,0x82,i);
printf("\nAu revoir ! \n\n");
system("PAUSE");
return 0;
}
pour savoir la valeur hexadécimale d'un caractère.
Mais il y a un problème à l'usage quand le caractère
suivant dans le message est a,b,c,d,e ou f
Il faut passer en octal. Voir ci-joint dans :
"Conversion en fraction égyptienne" - pgl10.
victorcoasne
Messages postés1101Date d'inscriptionjeudi 24 avril 2003StatutMembreDernière intervention23 juillet 20237 19 nov. 2009 à 09:09
Enfin, j'appuie CptPingu pour dire qu'on ne DOIT PAS appeler une variable comme un type.
Il y avait une solution pour utiliser l'opérateur << : définir une classe qui gère cela.
Pour moi cette source n'est pas assez fournie pour avoir sa place sur ce site.
cptpingu
Messages postés3840Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention23 août 2024126 19 nov. 2009 à 01:13
> Les é, è , ê, etc. sont mal affichés avec cout << et sous Dev-c++.
Faux. Le problème ne vient pas de C++, ou de Dev-C++, mais de la configuration du terminal. Sous unix, avec un terminal en UTF8, je n'ai jamais de problème. Sous Windows, je ne sais pas si c'est possible de configurer le type d'encodage du terminal (ça doit l'être).
Au niveau du code maintenant:
> #include <cstdlib>
Inutile.
> #include
> #include <string>
string est inclu dans iostream, donc inutile de le remettre.
> using namespace std;
Beurk ! A éviter. Mieux vaut écrire std::cout et std::string.
A la limite: using std::cout; et using std::string; dans une portée limitée.
> void print(string string)
Appeler une variable comme un type n'est vraiment pas judicieux.
> if (string[x] =='ê'){string[x] = '\x88';}
> if (string[x] =='ü'){string[x] = '\x81';}
Plutôt que d'avoir une série de if, mieux vaut créer un tableau statique constant, qui comportera toutes les correspondances. C'est plus souple à mettre à jour, et allège la fonction.
D'un point de vue générale, c'est un peu court pour un code source. C'est juste quelques if, et à mon avis, si admin passe par là, cette source sera supprimée.
19 nov. 2009 à 11:28
#include <stdlib.h>
#include <stdio.h>
int main ()
{
int i;
char c;
printf("\nEntrez un caract%cre : ",0x8A);
i=getchar();
c=(char)i;
printf("\nPour %c le code hexad%ccimal est : \\x%x \n",c,0x82,i);
printf("\nAu revoir ! \n\n");
system("PAUSE");
return 0;
}
pour savoir la valeur hexadécimale d'un caractère.
Mais il y a un problème à l'usage quand le caractère
suivant dans le message est a,b,c,d,e ou f
Il faut passer en octal. Voir ci-joint dans :
"Conversion en fraction égyptienne" - pgl10.
19 nov. 2009 à 09:09
De plus, il existe une fonction qui effectue la conversion : CharToOem
Voir ici : http://msdn.microsoft.com/en-us/library/ms647473%28VS.85%29.aspx
Enfin, j'appuie CptPingu pour dire qu'on ne DOIT PAS appeler une variable comme un type.
Il y avait une solution pour utiliser l'opérateur << : définir une classe qui gère cela.
Pour moi cette source n'est pas assez fournie pour avoir sa place sur ce site.
19 nov. 2009 à 01:13
Faux. Le problème ne vient pas de C++, ou de Dev-C++, mais de la configuration du terminal. Sous unix, avec un terminal en UTF8, je n'ai jamais de problème. Sous Windows, je ne sais pas si c'est possible de configurer le type d'encodage du terminal (ça doit l'être).
Au niveau du code maintenant:
> #include <cstdlib>
Inutile.
> #include
> #include <string>
string est inclu dans iostream, donc inutile de le remettre.
> using namespace std;
Beurk ! A éviter. Mieux vaut écrire std::cout et std::string.
A la limite: using std::cout; et using std::string; dans une portée limitée.
> void print(string string)
Appeler une variable comme un type n'est vraiment pas judicieux.
> if (string[x] =='ê'){string[x] = '\x88';}
> if (string[x] =='ü'){string[x] = '\x81';}
Plutôt que d'avoir une série de if, mieux vaut créer un tableau statique constant, qui comportera toutes les correspondances. C'est plus souple à mettre à jour, et allège la fonction.
D'un point de vue générale, c'est un peu court pour un code source. C'est juste quelques if, et à mon avis, si admin passe par là, cette source sera supprimée.