magiclazy a écrit :
smirff sa ve pas non plus mais c peu etre moi en tout cas
merci pour les recherches et tout ...
|
J'ai modifié mon code.
[EDIT]
2 mots d'explications, parce que c'est pas évident.
Comme je te l'avais signalé, getpass() est une fonction aussi dangereuse que gets(), car il n'y a pas de paramètre 'taille'. La fonction n'a donc aucune possibiliité de tester si il y a débordement ou pas.
Borland, qui a développé la bibliothèque conio a crée des fonctions qui ressemblaient aux fonctions standard, mais avec un 'c' devant pour 'conio' (console).
Par exemple gets() est devenu cgets().
Or gets() souffrant du problème qu'on lui connait, Borland a touvé la parade suivante.
- Le premier byte contiendra la taille - 3.
- Les données utiles commenceront en +2.
C'est un choix assez tordu, mais il faut s'y conformer.
/* tableau de char */
char s[32];
/* "Le premier byte contiendra la taille - 3." */
char[0] = sizeof s - 3;
/* saisie */
cgets(s);
/* "Les données utiles commenceront en +2" */
printf ("'%s", s + 2);
|
getpass'() est construit sur cgets() et obéit donc aux mêmes principes.
---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/