Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3946 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Suivante
Auteur Sujet :

[C] remplacer par des étoiles ou par rien...

n°1266331
Emmanuel D​elahaye
C is a sharp tool
Posté le 14-12-2005 à 13:57:05  profilanswer
 

Reprise du message précédent :


 
Ok, j'avais pas testé mon code, désolé. En fait les données utiles commencent à tab+2. C'est sans doute dans la doc... Il doit y avoir des infos annexes (longueur, peut être...) dans les premiers bytes...  
 
http://conio.sourceforge.net/docs/ [...] 8h.html#a0
 
Ce genre de gag étatit courant dans certaines bibliothèques Borland (à l'origine de conio). Quand on s'écarte du standard, on arrive vite sur des terrains glissants...


   #include <conio2.h>
 
   #include <string.h>
   #include <stdio.h>
 
   int main (void)
   {
      char pwd[128];
 
      pwd[0] = sizeof pwd - 3;
      getpass ("Password: ", pwd);
 
      puts ("" );
 
#if 0
      printf ("'%s'\n", pwd + 2);
#endif
 
      if (strcmp (pwd + 2, "aa" ) == 0)
      {
         puts ("let's get in..." );
      }
      else
      {
         puts ("input error" );
      }
 
      return 0;
   }


Message édité par Emmanuel Delahaye le 14-12-2005 à 14:10:23

---------------
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/
mood
Publicité
Posté le 14-12-2005 à 13:57:05  profilanswer
 

n°1266334
magiclazy
citation personnelle associé
Posté le 14-12-2005 à 14:02:40  profilanswer
 

smirff sa ve pas non plus mais c peu etre moi en tout cas
 
 merci pour les recherches et tout ...


---------------
signature du message
n°1266341
Emmanuel D​elahaye
C is a sharp tool
Posté le 14-12-2005 à 14:08:18  profilanswer
 

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.

Message cité 1 fois
Message édité par Emmanuel Delahaye le 14-12-2005 à 14:19:58

---------------
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/
n°1266344
magiclazy
citation personnelle associé
Posté le 14-12-2005 à 14:10:20  profilanswer
 

YEAHH YOUPI PERFECT !!!
 
c exactement sa enfin on y arrive (enfin tu y arrive ..)  
 
Merci bcp pour ta patience .....et tes recherches merci :!
 
 [EDIT]une derniere petite chose ece facile de boucler cette commande si le mot de passe est mauvais (de le redemander) si c'est le cas
comment faire en tout cas merci encore

Message cité 2 fois
Message édité par magiclazy le 14-12-2005 à 14:11:21

---------------
signature du message
n°1266354
Elmoricq
Modérateur
Posté le 14-12-2005 à 14:20:12  profilanswer
 

magiclazy a écrit :

[EDIT]une derniere petite chose ece facile de boucler cette commande si le mot de passe est mauvais (de le redemander) si c'est le cas
comment faire en tout cas merci encore


 
Suffit de faire boucler, une fois terminées toutes les initialisations :

do
{
   getpass ("Password: ", pwd);
   puts ("" );
}
while (strcmp (pwd + 2, "aa" ) != 0) ;

n°1266357
magiclazy
citation personnelle associé
Posté le 14-12-2005 à 14:21:23  profilanswer
 

oki javais deja oublier sa ..lol alalal
 
MErci BCP


---------------
signature du message
n°1266358
Emmanuel D​elahaye
C is a sharp tool
Posté le 14-12-2005 à 14:21:24  profilanswer
 

magiclazy a écrit :

une derniere petite chose ece facile de boucler cette commande si le mot de passe est mauvais (de le redemander) si c'est le cas
comment faire en tout cas


Pour moi, c'est facile, mais ce n'est pas le propos. Comme toujours, fait de ton mieux et poste ton code.


---------------
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/
n°1266366
chrisbk
-
Posté le 14-12-2005 à 14:28:33  profilanswer
 

Emmanuel Delahaye a écrit :

J'ai modifié mon code.
 
C'est un choix assez tordu, mais il faut s'y conformer.


 
un truc genre
 
 

Code :
  1. struct Youplon
  2. {
  3. char taille;
  4. char val[];
  5. }


 
pour simplifier le bins peut etre ?

n°1266369
magiclazy
citation personnelle associé
Posté le 14-12-2005 à 14:35:59  profilanswer
 

Code :
  1. #include <conio2.h>
  2. #include <string.h>
  3. #include <stdio.h>
  4.    int main (void)
  5.    {
  6.       char pwd[128];
  7.       pwd[0] = sizeof pwd - 3;
  8.       do
  9.       {
  10.         getpass ("Password: ", pwd);
  11.         puts ("" );
  12.       }
  13.         while (strcmp (pwd + 2, "aa" ) != 0) ;
  14.         printf("he on continue le programme et faire le reste" );
  15.       return 0;
  16.    }


 
 
 
c'est un peu modifier sa marche ;) tant mieux mais je voudrais savoir a quoi sa servait le   #if 0 ??
parceque il y est plus ..


---------------
signature du message
n°1266371
chrisbk
-
Posté le 14-12-2005 à 14:39:12  profilanswer
 

#if 0 / endif est une facon barbare de mettre du code en commentaire

mood
Publicité
Posté le 14-12-2005 à 14:39:12  profilanswer
 

n°1266375
magiclazy
citation personnelle associé
Posté le 14-12-2005 à 14:44:04  profilanswer
 

ha .... ok lol


---------------
signature du message
n°1266378
Emmanuel D​elahaye
C is a sharp tool
Posté le 14-12-2005 à 14:50:11  profilanswer
 

chrisbk a écrit :

#if 0 / endif est une facon barbare de mettre du code en commentaire


Barbare toi même !
 
http://crjr.online.fr/images/barbare.gif
 
Non mais !
 


---------------
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/
n°1266380
Emmanuel D​elahaye
C is a sharp tool
Posté le 14-12-2005 à 14:51:33  profilanswer
 

chrisbk a écrit :

un truc genre
 
 

Code :
  1. struct Youplon
  2. {
  3. char taille;
  4. char val[];
  5. }


 
pour simplifier le bins peut etre ?


Ca, c'est barbare ! Pas portable...padding, toussa...)


---------------
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/
n°1266381
chrisbk
-
Posté le 14-12-2005 à 14:54:21  profilanswer
 

Emmanuel Delahaye a écrit :

Ca, c'est barbare ! Pas portable...padding, toussa...)


 
ouais mais ca me plait. Attends, j'améliore
 

Code :
  1. #pragma pack(1)
  2. struct Youplon
  3. {
  4. unsigned char size;
  5. char prout[];
  6. }
  7. #pragma pack()


 

n°1266393
Emmanuel D​elahaye
C is a sharp tool
Posté le 14-12-2005 à 15:11:11  profilanswer
 

chrisbk a écrit :

ouais mais ca me plait. Attends, j'améliore
 
[cpp]#pragma pack(1)


Pas portable...
 


---------------
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/
n°1266394
chrisbk
-
Posté le 14-12-2005 à 15:11:48  profilanswer
 

ranaf' de la portabilité, chu ouf moa

n°1266594
magiclazy
citation personnelle associé
Posté le 14-12-2005 à 17:31:27  profilanswer
 

.... a lala cette jeunesse ..


---------------
signature du message
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
Remplacer un Grapher Ilog Views avec QT 4.0Rechercher/remplacer
Remplacer N° de ligne cellules par variablesRemplacer un caractère par un autre?
Help please : j'arrive à rienEncore Internet Explorer qui ne respecte rien....
requete d'ajout qui ne fait rienAffichage d'une image qui ne ressemble à rien
remplacer une chaine de caractere dans un fichier en .batJ'comprends plus rien : SPIP
Plus de sujets relatifs à : [C] remplacer par des étoiles ou par rien...


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)