Besoin d'aide programme en C

Fermé
jfjava2002 Messages postés 34 Date d'inscription mardi 22 février 2005 Statut Membre Dernière intervention 29 mai 2006 - 28 déc. 2005 à 19:50
jalico Messages postés 6 Date d'inscription jeudi 29 décembre 2005 Statut Membre Dernière intervention 29 décembre 2005 - 29 déc. 2005 à 14:27
Bonsoir

j'aurai beson d'aide pour débboguer un programme en C, langage que je ne maitrise pas mais que je suis obligé d'utiliser.

le but du prog est dispo ici : http://jfjava2002.free.fr/tp5.html

le compilateur (gcc sous linux) me renvoi une erreur : référencement indéfinie pour la fonction crypt().
le code :

#include <stdio.h>
#include <string.h>
#include <unistd.h>

// le prototype de main est

int main(int argc, char *argv[])

// lorsqu'on ne veut pas utiliser les arguments de la ligne de commande : int main(void)


{
  char ch[255], _salt[100]; //définition de la chaine
  char * clef;
  char chcrypt;

    char a,b,c,d,e,f,g,h; //definition des variables

    a=b=c=d=e=f=g=h=97; //initialisation des variables
    for (a=97;a<=98;a++) //pour 1 tour de boucle sinon mettre 105 au lieu de 98
    {
        for (b=97; b<=122;b++)
       {
	 for (c=97;c<=122;c++)
	   {
	     for (d=97; d<=122;d++)
	       {
		 for (e=97; e<=122; e++)
		   {
		     for (f=97; f<=122; f++)
		       {
			 for (g=97; g<=122; g++)
			   {
			     for (h=97; h<=122; h++)
			       {
			
           ch[0] = a;
           ch[1] = b;
	   ch[2] = c;
	   ch[3] = d;
	   ch[4] = e;
	   ch[5] = f;
	   ch[6] = g;
	   ch[7] = h;
           ch[8] = 0;
	  //puts(ch); permet l'affichage de la chaine
	   chcrypt = crypt(ch,argv[2]);
	     if (strcmp(ch,argv[1])==0)
	       {
		 printf("le mot de passe pour %s est %s",argv[1],ch);   
	       }
			       }
			   }
		       }
		   }
	       }
	   }
       }

    }

   
   // la fonction main doit retourner un entier !
   //return 0;
}


Merci d'avance pour votre aide

4 réponses

crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 507
28 déc. 2005 à 20:56
Salut
Tu utilises bien la ligne de compilation suivante :
gcc -Wall -lcrypt -o mon_crack mon_crack.c

Je pars du principe que ton source est dans le fichier mon_crack.c
J'ai le même message d'erreur en ne mettant pas -lcrypt dans lors de la compil.
A+, crabs
0
jfjava2002 Messages postés 34 Date d'inscription mardi 22 février 2005 Statut Membre Dernière intervention 29 mai 2006 4
29 déc. 2005 à 01:00
ben le problème est qu'il me metimplicit déclaration of function 'crypt'...
0
crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 507
29 déc. 2005 à 01:10
Fais un 'man crypt' sur ton système Linux, il t'indiquera quelles sont les
lignes (include et define ) à mettre en tête de ton source afin d'éviter ce
warning.
0
jalico Messages postés 6 Date d'inscription jeudi 29 décembre 2005 Statut Membre Dernière intervention 29 décembre 2005 5
29 déc. 2005 à 14:27
Salut,

Généralement " implicit déclaration of function 'crypt' " signifie que le compilo n'a pas trouvé le prototypage avant l'utilisation de la fonction.
Vérifies qu'il est bien dans unistd.h sous la forme extern char *crypt(const char *, const char *);

sinon le pb peut venir du faite que les parametres ne soient pas du meme type que le prototypage utilisé => cast des paramètres et ajout de prototypage devrait résoudre ton pb.

+A
0