J en ai marre !!!! convertir une lettre en nombre (ascii)
adess00
Messages postés261Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention27 septembre 2008
-
29 août 2005 à 20:07
steve_clamage
Messages postés475Date d'inscriptiondimanche 3 octobre 2004StatutMembreDernière intervention11 août 2006
-
30 août 2005 à 08:07
Bonjour je lutte depuis pa mal de temps et je croi ke j y ariverai pas tou seul
Je voudrai savoir comment on convertir une caractere d une chaine entree en nombre ascii
voila mon code pour l instant
{
int i = 3445;
char cle[1], *stop;//si kkun pe m expliker comment marche cette declaration
int asc_cle=0;
printf("Entrez la clé de cryptage : ");
gets(cle);
asc_cle=strtol(cle,stop,10);
printf("%d\n",asc_cle);
return 0;
}
(Je debute en C faut jai reussi en VBmais la faut penser differemment argh)
adess00
Messages postés261Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention27 septembre 20081 29 août 2005 à 20:39
euh ouai je croi que jme suis mal exprimé
En faite l utilisateur entre son text (pas un nombre) par exemple "coucou"
ensuite je recupere le caractere "c" et la je le converti en ascii et j obtien mon nombre avec lekel je fai ske jve apres
voila :)
adess00
Messages postés261Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention27 septembre 20081 29 août 2005 à 21:02
cool
Merci !
Mais ya juste un truc que je comprend pas
Pour la fonction fgets c koi stdin j ai vu ke sa correspondai a FILE mais je vois pas ske c est et est ce important de ne pas avoir de limitation de la taille du buffer avec gets() ?
mezaya
Messages postés202Date d'inscriptiondimanche 18 mai 2003StatutMembreDernière intervention 6 mars 2010 29 août 2005 à 21:18
il y a 4 buffer entrées / sortie prédéfinis en c.
1 buffer d'entré : stdin pour le clavier.
3 buffer de sortie : stdout sortie sur l'écran , stderr sortie sur
l'écran ( sans tampon ) , stdlog ... ( je sais plus trop; je m'en sers
jamais ).
la limitation est tres important car dans ta source tu déclarais un
buffer de 1 caractère. ( char cle[1] ). si l'utilisateur tape une
phrase de 20 caractères la fonction gets() va écrire 20 caractère dans
ton buffer et va donc débordé (de 19 ) sur une zone mémoire non aloué.
Normalement le systeme va s'en apercevoir est du va avoir une erreur
windows du type : Machin.exe a planter. la mémoire ne peut pas être
read...
alors qu'avec le fgets tu limite le nombre de carctère a écrire et donc
ainsi même si l'utilisateur entre 1000 caratère fgets ne dépassera pas
la limite fixé.
steve_clamage
Messages postés475Date d'inscriptiondimanche 3 octobre 2004StatutMembreDernière intervention11 août 20065 30 août 2005 à 08:07
C'est meme pir que ca dans ce cas, avec char cle[1] le dépassement va
se faire sur ce qui à été aloué précédamment sur la pile et écraser la
valeur d'autres variables globales, de l'adresse retour de la
fonction...