Conversion en C
Fermé
£udo
Messages postés
455
Date d'inscription
mardi 8 juin 2004
Statut
Membre
Dernière intervention
19 décembre 2006
-
17 oct. 2005 à 18:38
mamiemando Messages postés 33432 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 décembre 2024 - 17 oct. 2005 à 22:41
mamiemando Messages postés 33432 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 décembre 2024 - 17 oct. 2005 à 22:41
A voir également:
- Conversion en C
- Monnaie conversion - Télécharger - Banque & Budget
- Conversion mb en go ✓ - Forum Mail
- Tableau conversion heure en centième ✓ - Forum Excel
- Formule additionner H et conversion en décimal - Forum LibreOffice / OpenOffice
- Conversion ascii - Guide
3 réponses
crabs
Messages postés
908
Date d'inscription
lundi 18 avril 2005
Statut
Membre
Dernière intervention
3 août 2008
507
17 oct. 2005 à 20:25
17 oct. 2005 à 20:25
Salut,
Dans tes déclarations :
char machin ; => c'est un caractère
Plus loin
scanf( "%s", &machin ) ; => si tu veux saisir un seul caractère c'est %c
Sinon risque d'avoir des plantages intempestifs
strcpy(&seleve.retard,machin); => la fonction strcpy() est réservée au
chaine de caractères (risque de plante), utilises une affectation simple
eleve.retard = machin ;
Ensuite pour convertir, si c'est un seul chiffre :
int retard_entier ; dans les déclarations
retard = (int)( retard - '0' ) ; dans le traitement
[ retard contient le code ascii du chiffre, si tu enlèves le code ascii de 0 au
code ascii d'un chiffre t'obtient la valeur entière de ce chiffre]
Si tu veux absolument saisir une chaine
char retard[16] ;
scanf( "%s", retard ) ; // ca protège pas contre dépassement de pile, mais
ça doit pas être encore au programme
vérification
ajout dans les déclarations :
int i,ok ;
Boucle de vérification
la boucle for() part du principe qu'en C, une chaine de caratères se termine
par le caractère 0 ( '\0' ) .
[j'espère ne pas trop m'être planté dans le code C]
A+, crabs
Dans tes déclarations :
char machin ; => c'est un caractère
Plus loin
scanf( "%s", &machin ) ; => si tu veux saisir un seul caractère c'est %c
Sinon risque d'avoir des plantages intempestifs
strcpy(&seleve.retard,machin); => la fonction strcpy() est réservée au
chaine de caractères (risque de plante), utilises une affectation simple
eleve.retard = machin ;
Ensuite pour convertir, si c'est un seul chiffre :
int retard_entier ; dans les déclarations
retard = (int)( retard - '0' ) ; dans le traitement
[ retard contient le code ascii du chiffre, si tu enlèves le code ascii de 0 au
code ascii d'un chiffre t'obtient la valeur entière de ce chiffre]
Si tu veux absolument saisir une chaine
char retard[16] ;
scanf( "%s", retard ) ; // ca protège pas contre dépassement de pile, mais
ça doit pas être encore au programme
vérification
ajout dans les déclarations :
int i,ok ;
Boucle de vérification
ok=0 ; while ( !ok ) { printf( "Retard : " ) ; fflush(stdout ) ; fflush( stdin ) ; scanf( "%s", retard ) ; ok = 1 ; /* on part du principe que c'est ok for( i=0; retard[i]; i++ ) if ( !isdigit( retard[i] ) ) { ok=0; break ; } } eleve.retard = atoi( retard ) ;
la boucle for() part du principe qu'en C, une chaine de caratères se termine
par le caractère 0 ( '\0' ) .
[j'espère ne pas trop m'être planté dans le code C]
A+, crabs
£udo
Messages postés
455
Date d'inscription
mardi 8 juin 2004
Statut
Membre
Dernière intervention
19 décembre 2006
16
17 oct. 2005 à 21:30
17 oct. 2005 à 21:30
jte remercie ça passe bien. Mais je ne comprends pas trop la conversion
Ensuite pour convertir, si c'est un seul chiffre :
int retard_entier ; dans les déclarations
retard = (int)( retard - '0' ) ; dans le traitement
[ retard contient le code ascii du chiffre, si tu enlèves le code ascii de 0 au
code ascii d'un chiffre t'obtient la valeur entière de ce chiffre]
peux tu m'expliquer stp?
(¯`·.¸¸.-> £udo <-.¸¸.·´¯)
Ensuite pour convertir, si c'est un seul chiffre :
int retard_entier ; dans les déclarations
retard = (int)( retard - '0' ) ; dans le traitement
[ retard contient le code ascii du chiffre, si tu enlèves le code ascii de 0 au
code ascii d'un chiffre t'obtient la valeur entière de ce chiffre]
peux tu m'expliquer stp?
(¯`·.¸¸.-> £udo <-.¸¸.·´¯)
mamiemando
Messages postés
33432
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
16 décembre 2024
7 809
17 oct. 2005 à 22:41
17 oct. 2005 à 22:41
En fait à chaque caractères est associé un code (le code ascii). Dans cette table, 0,1,2... se suivent, mais le nombre 0 n'a pas la valeur 0 en ascii ! Il faut donc translater les valeurs ascii et c'est le rôe de cette soustraction.
Pour plus de précisions :
Bonne chance
Pour plus de précisions :
man ascii
Bonne chance