|
|
|
|
Bonsoir,
j'ai un soucis avec les tableaux de pointeurs
int main(void)
{
char *mot[20];
char *texte[200];
printf("Donner le texte: ");
scanf(" %s",texte);
printf("Donner le mot: ");
scanf(" %s",mot);
printf("\n");
printf("Le nombre d'occurences est : %d\n",nboccurences(texte,mot));
return 0;
}
voici le programme qui fait appel à la fonction nboccurences qui recoit en argument 2 chaines de caracteres .
mon probleme est comment faire appel à cette fonction
la compilation ne s'effectue que lorsque je mets nboccurences(*texte,*mot)...
je voudrais donc comprendre se qui se passe et aussi savoir ce qu il faut mettre dans le scanf
merci de m'informer sur ce point
Cordialement
Sophie
Salut =)
char *mot[20]; car ce n'est pas un tableau de pointeur que tu dois déclarer, mais un tableau de char. il faut donc mettre : char mot[20]; ta variable mot sera alors un char * qui pointera vers la première case de ton tableau. donc quand tu appelles ta fonction ça donne : nboccurences(texte,mot); et de même pour le scanf : scanf(" %s",texte);
car tu passes un pointeur sur une chaine de caractères, donc ça marche ! ++ Le Parisien, il vaut mieux l'avoir en journal !!! :-P
|
Je me suis peut etre mal exprimé, mais à vrai je ne saisi pas le mot recherché car le programme affiche directement le resultat, le voici
|
Répondre à frup
|
Alors, j'ai changé un peu ta fonction nboccurrences et ça a l'air de marcher. en fait, j'utilise le retour de la fonction strstr(), qui renvoie une chaine de caractères où la première occurrence du mot cherché est trouvée. c'est-à-dire que si je fait :
buffer = strstr("je dis bonjour et au revoir", "bonjour");
j'aurais dans buffer "bonjour et au revoir". donc après il faut incrémenté le pointeur de la longueur du mot recherché comme tu l'avais fait. ça donne ça : int nboccurences (char cs[], char ct[])
{
int nb = 0; /*initialiser le nombre d'occurences*/
int lengthct = strlen (ct); /* longueur du mot recherché*/
while (1) /*repeter toujours! la fin sera indiquée*/
/* par le "return nb"*/
{
cs = strstr (cs, ct);
if (cs==NULL)
return nb; /* retourner le nombre*/
nb++; /*incrementer le nombre d'occurences*/
cs += lengthct; //il faut pointer après le mot qu'on vient de trouver
if (lengthct >= strlen(cs)) /*reste encore du texte*/
return nb; /* retourner le nombre*/
}
}
voili voilou, désolé mais je garde ta fonction bien précieusement car ça peut toujours servir ça ! ++ bonne nuit =) Le Parisien, il vaut mieux l'avoir en journal !!! :-P |