Satané pointeur

RamS13 Messages postés 3 Date d'inscription mardi 26 août 2003 Statut Membre Dernière intervention 1 septembre 2006 - 1 sept. 2006 à 15:48
J6B Messages postés 11 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 4 septembre 2006 - 4 sept. 2006 à 15:25
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

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

TuRn3r
0
bonjour__ Messages postés 25 Date d'inscription lundi 20 mars 2006 Statut Membre Dernière intervention 27 septembre 2008
1 sept. 2006 à 16:51
qu'elle le but de programme
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
1 sept. 2006 à 17:04
Assure toi que ton pointeur soit bien initialisé.

Shell
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
1 sept. 2006 à 17:12
char* MotCle;

 int Index = 0;

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

 scanf("%s",&MotCle);


=> Aucune mémoire allouée à MotCle la. C'est normal ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bonjour__ Messages postés 25 Date d'inscription lundi 20 mars 2006 Statut Membre Dernière intervention 27 septembre 2008
1 sept. 2006 à 17:31
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);
}
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
1 sept. 2006 à 18:43
#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
0
J6B Messages postés 11 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 4 septembre 2006
4 sept. 2006 à 15:25
Ta fonction cmp() fait à peu de chose près la même chose que !strcmp().
0
Rejoignez-nous