Satané pointeur

Signaler
Messages postés
3
Date d'inscription
mardi 26 août 2003
Statut
Membre
Dernière intervention
1 septembre 2006
-
Messages postés
11
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
4 septembre 2006
-
cette partie de programme bug a l'endroit rose
pouvez vous m'éclairer svp.
merci d'avance .

bool cmp(char* a,char b[])
{
 int boucle;
 unsigned int taillea;
 unsigned int tailleb;
 tailleb = strlen((char*)b);
 taillea = strlen(a);
 printf("%d  %d",taillea,tailleb);
 if (taillea > tailleb)
  return false;
 for (boucle=0;boucle<taillea;boucle++)
  if ((char)a[boucle]!=(char)b[boucle])
   return false;
  printf("vrai");
 return true;
}


void Rechercher()
{
 char* MotCle;
 int Index = 0;
 printf("Saisir un mot clef\n");
 scanf("%s",&MotCle);
 while ((Index<Max ) && (repertoire[Index].fixe[0]!='$'))
  {if (cmp(MotCle , repertoire[Index].nom) ||
    cmp(MotCle, repertoire[Index].prenom) ||
    cmp(MotCle , repertoire[Index].age) ||
    cmp(MotCle , repertoire[Index].fixe) ||
    cmp(MotCle , repertoire[Index].portable) ||
    cmp(MotCle , repertoire[Index].add.num) ||
    cmp(MotCle , repertoire[Index].add.code) ||
    cmp(MotCle , repertoire[Index].add.rue) ||
    cmp(MotCle , repertoire[Index].add.ville) ||
    cmp(MotCle , repertoire[Index].add.typerue) ||
    cmp(MotCle , repertoire[Index].add.pays))
    AfficherClient(Index);
  Index++;}
}

7 réponses

Messages postés
492
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
12 janvier 2012
1
Dans
 scanf("%s",&MotCle);
il faut pas de & devant MotCle :
 scanf("%s",MotCle);

TuRn3r
Messages postés
25
Date d'inscription
lundi 20 mars 2006
Statut
Membre
Dernière intervention
27 septembre 2008

qu'elle le but de programme
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
1
Assure toi que ton pointeur soit bien initialisé.

Shell
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
char* MotCle;

 int Index = 0;

 printf("Saisir un mot clef\n");

 scanf("%s",&MotCle);


=> Aucune mémoire allouée à MotCle la. C'est normal ?
Messages postés
25
Date d'inscription
lundi 20 mars 2006
Statut
Membre
Dernière intervention
27 septembre 2008

il faut reserver la memoire
void Rechercher()
{
 char* MotCle=(char *)malloc(sizeof(char)* ?? ); //?? taille max
 int Index = 0;
 printf("Saisir un mot clef\n");
 scanf("%s",MotCle);
 while ((Index<Max ) && (repertoire[Index].fixe[0]!='$'))
  {if (cmp(MotCle , repertoire[Index].nom) ||
    cmp(MotCle, repertoire[Index].prenom) ||
    cmp(MotCle , repertoire[Index].age) ||
    cmp(MotCle , repertoire[Index].fixe) ||
    cmp(MotCle , repertoire[Index].portable) ||
    cmp(MotCle , repertoire[Index].add.num) ||
    cmp(MotCle , repertoire[Index].add.code) ||
    cmp(MotCle , repertoire[Index].add.rue) ||
    cmp(MotCle , repertoire[Index].add.ville) ||
    cmp(MotCle , repertoire[Index].add.typerue) ||
    cmp(MotCle , repertoire[Index].add.pays))
    AfficherClient(Index);
  Index++;}
free(MotCle);
}
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
#define
MAX_MOTCLE <taille max d'un mot clé>




char
MotCle[MAX_MOTCLE];
...
fgets(MotCle, MAX_MOTCLE
, stdin);

-On va pas s'amuser a mettre des malloc là ou il n'y en a pas besoin
-Il est préférable d'utiliser fgets à scanf



_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
11
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
4 septembre 2006

Ta fonction cmp() fait à peu de chose près la même chose que !strcmp().