Bonjour,
je voudrais savoir comment forcer le type "int" en "char"
En effet l'objectif pour moi est de faire une comparaison entre le chiffre 8 et le caractere "8"
Aussi, pour faire la comparaison de 2 char , je peut faire un "strcmp" ?
Merci
-----
28/07/2008, 11h39
#2
invite8b867113
Date d'inscription
janvier 1970
Messages
627
Re : Question langage C
Pour mettre la valeur d'une variable int dans une variable char, un simple cast suffit :
Code:
int nChar=8;
char c=(char)nChar;
//la variable c a pour valeur 8 (caractère backspace)
Pour convertir une valeur en caractère, c'est un peu plus sioux.
Code:
char c='8';
int nChar;
nChar=c-'0';
//la variable nChar contient la valeur 8
int nChar=8;
char c;
c=nChar+'0';
//la variable c contient le caractère '8'
Ceci focntionne car les caractère '0'..'9' sont rangés de façon croissante et consécutive dans la table ascii.
Pour comparer 2 variables de type char, les opérateurs de comparaison sont suffisants (<,> , ==, != ..)
28/07/2008, 11h54
#3
invitec77afd19
Date d'inscription
janvier 1970
Messages
134
Re : Question langage C
ok je teste et je te tiens au courant
merci beaucoup
28/07/2008, 12h02
#4
invitec77afd19
Date d'inscription
janvier 1970
Messages
134
Re : Question langage C
et comment je fais du coup pour comparer "c" avec le caractere "8" . strcmp sa marche?
Aujourd'hui
A voir en vidéo sur Futura
28/07/2008, 12h15
#5
invitec77afd19
Date d'inscription
janvier 1970
Messages
134
Re : Question langage C
si je fais
strcmp(c, "8")
le compilateur me dis:
invalid conversion from 'char' to 'const char*'
du coup je c pas comment faire la comparaison
28/07/2008, 12h23
#6
invite8b867113
Date d'inscription
janvier 1970
Messages
627
Re : Question langage C
strcmp c'est pour comparer les chaines de caractères.
"8" est une chaine composée seulement du caractère '8'
'8' est un caractère.
Code:
char c;
switch(c)
{
case '0':
//TODO
break;
default:;
}
if (c!='8' && c>'4') //'5' ou '6' ou '7' ou '9'
\\TODO
28/07/2008, 12h28
#7
invite4ad25ccf
Date d'inscription
janvier 1970
Messages
1 304
Re : Question langage C
attention : '8' et "8" sont deux choses completement différentes :
'8' correspond au caractère 8.
"8" correspond à la chaine de caractère '8' + '\0' (caractère final d'une chaine de caractere).
De plus str(n)cmp() n'utilise que des chaines de caractères.
Un petit code pour faire les 3 comparaisons possibles :
Code:
char cCode = 8; // caractère de code 8
char cChar = '8'; // caractère 8
char *str = "8" // chaine de caractère 8
printf("%d - %c\n", cCode, cCode); // affiche "8 - [caractère backspace]"
printf("%d - %c\n", cChar, cChar); // affiche "56 - 8"
// comparaison entre cCode et cChar :
if (cCode + '0' == cChar)
...
// comparaison de cChar et str
if (cChar == *str) // ou alors if(cChar == str[0])
...
// comparaison de cCode et str
if (cCode + '0' == *str)
...