Pointeurs en C
popop200
-
popop200 -
popop200 -
Bonjour,
je possède une fonction dont le prototype en C est le suivant :
int compte_mots(char **ptab_mots)
J'aimerais pouvoir l'utiliser sur un exemple mais ça me renvoie l'erreur suivante quand je compile :
passing argument 1 of «compte_mots" from incompatible pointer type
Pour utiliser ma fonction je fais
char *p;
char *chaine="il fait beau";
*p=&chaine:
compte_mots(p);
Pourriez-vous m'aider à régler ce problème.
Merci d'avance.
je possède une fonction dont le prototype en C est le suivant :
int compte_mots(char **ptab_mots)
J'aimerais pouvoir l'utiliser sur un exemple mais ça me renvoie l'erreur suivante quand je compile :
passing argument 1 of «compte_mots" from incompatible pointer type
Pour utiliser ma fonction je fais
char *p;
char *chaine="il fait beau";
*p=&chaine:
compte_mots(p);
Pourriez-vous m'aider à régler ce problème.
Merci d'avance.
3 réponses
Salut,
voici un exemple sans pointeur de pointeur, mais le passage directement par adresse en utilisant &
il faut écrire
voici un exemple sans pointeur de pointeur, mais le passage directement par adresse en utilisant &
#include<stdio.h> int compte_char(char **chaine); int main() { char *chaine = "Salut tout le monde!\n"; printf("%d\n",compte_char(&chaine)); return 0; } int compte_char(char **chaine){ int i=0; while((*chaine)[i++] != '\0') ; return i; }dans ton cas
il faut écrire
char **p; char *chaine = "Salut tout le monde!\n"; p = &chaine; printf("%d\n",compte_mots(p));voici un exemple
#include<stdio.h> int compte_char(char **chaine); int main() { char **p; char *chaine = "Salut tout le monde!\n"; p = &chaine; printf("%d\n",compte_char(p)); return 0; } int compte_char(char **chaine){ int i=0; while((*chaine)[i++] != '\0') ; return i; }
et ben je vois que ta fonction prend en parametre un char ** et toi tu lui envoi un char *
de plus si tu veut metre "il fait beau" dans *p il te faut utiliser strcpy() sans oublier allouer de la memoire au pointeur avant
et le prototype
int compte_mots(char *ptab_mots)
de plus si tu veut metre "il fait beau" dans *p il te faut utiliser strcpy() sans oublier allouer de la memoire au pointeur avant
char *p; char *chaine="il fait beau"; p=(char *)malloc(20); strcpy(p,chaine); compte_mots(p);
et le prototype
int compte_mots(char *ptab_mots)
Ok merci, c'est bien comme tu dis lami20j, sauf que maintenant je ne comprend pas, quoi que j'écrive dans ma chaine de caractères, cela me renvoie 13. Bizarre .Pourtant j'ai vérifié ma fonction, je vois pas ce qui cloche, peut être pourrais-tu y trouver quelque chose qui va pas :
int compte_mots(char **ptab_mots){
int cpt=0;
while(ptab_mots[cpt])
cpt++;
return cpt;}
Merci d'avance.
int compte_mots(char **ptab_mots){
int cpt=0;
while(ptab_mots[cpt])
cpt++;
return cpt;}
Merci d'avance.