[C] Init d1 Tableau dynamique en parametre...
Fermé
oliver91
Messages postés
51
Date d'inscription
lundi 21 mai 2007
Statut
Membre
Dernière intervention
9 septembre 2009
-
22 mai 2007 à 19:15
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 23 mai 2007 à 10:18
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 23 mai 2007 à 10:18
A voir également:
- [C] Init d1 Tableau dynamique en parametre...
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Tableau word - Guide
- Liste déroulante dynamique excel - Guide
- Trier tableau excel - Guide
8 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
22 mai 2007 à 23:28
22 mai 2007 à 23:28
Que vaut taillefict alors si c'est correct.
Car lorsque tu fais un malloc :
char **tab;
int nbCol=100;
int nbLig = 10;
int i;
tab=(char**)malloc(nbCol*sizeof(char*));
for(i=0;i<nbCol;i++)
tab[i]=(char*)malloc(nbLig*sizeof(char));
Je ne vois donc pas l'utilisation d'une autre variable dans cette partie.
Car lorsque tu fais un malloc :
char **tab;
int nbCol=100;
int nbLig = 10;
int i;
tab=(char**)malloc(nbCol*sizeof(char*));
for(i=0;i<nbCol;i++)
tab[i]=(char*)malloc(nbLig*sizeof(char));
Je ne vois donc pas l'utilisation d'une autre variable dans cette partie.
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
23 mai 2007 à 10:18
23 mai 2007 à 10:18
Salut
Si tu veux le faire passer en arguments :
Voilà, bonne chance
Si tu veux le faire passer en arguments :
void init(char ***tab,int cmtp){ *tab=(char **)malloc... for (*tab)[i]=(char *)malloc } int main(){ char**tab; init(&tab); return 0; }
Voilà, bonne chance
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
22 mai 2007 à 22:30
22 mai 2007 à 22:30
Salut.
Tu peux, et heureusement, allouer ton tableau dynamique ailleurs, comme dans une fonction. Tu ne perdras aucun élément.
Tu peux, et heureusement, allouer ton tableau dynamique ailleurs, comme dans une fonction. Tu ne perdras aucun élément.
oliver91
Messages postés
51
Date d'inscription
lundi 21 mai 2007
Statut
Membre
Dernière intervention
9 septembre 2009
3
22 mai 2007 à 22:58
22 mai 2007 à 22:58
en es tu sûr ? :(
car ma fonction d'affichage (séparée de la fonction de remplissage du tableau à 2 dim) ne fonctionne pas : erreur windows ; donc je pense qu'il n'arrive pas à acceder au tableau ...
Je fais le
Je fais les
Je fais l'affichage :
car ma fonction d'affichage (séparée de la fonction de remplissage du tableau à 2 dim) ne fonctionne pas : erreur windows ; donc je pense qu'il n'arrive pas à acceder au tableau ...
Je fais le
char **TermTab;ds le main().
Je fais les
TermTab=(char**)malloc(cmptp*sizeof(char*)); for(i=0;i<tailleficT;i++){ TermTab[j]=(char*)malloc((cmptc+1)*sizeof(char)); }dans la fonction : apartirdeTermFic(char ** TermTab,int cmptp);
Je fais l'affichage :
affichTerm(char ** TermTab, int cmptp){ int i=0; printf("\nVoici le nombre de Terminaux : %d\n",cmptp); printf("\nVoici les terminaux :\n"); for(i=0;i<cmptp;i++){ puts(TermTab[i]); } }Dans ma fonction affichage. Or elle plante ... pk ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
22 mai 2007 à 23:16
22 mai 2007 à 23:16
Pourrais-tu me donner ton main pour que je vois comment tu appelles les fonctions qui ont comme argument ton tableau.
Sinon plusieurs trucs :
TermTab=(char**)malloc(cmptp*sizeof(char*)); /*parfait, ;)*/
for(i=0;i<tailleficT;i++){ /*^pourquoi taillefict ??? Mets plutôt cmptp*/
TermTab[j]=(char*)malloc((cmptc+1)*sizeof(char)); /*C'est i qu'il faut mettre et pas j (peut etre erreur de frappe de ta part ;))*/
}
Sinon plusieurs trucs :
TermTab=(char**)malloc(cmptp*sizeof(char*)); /*parfait, ;)*/
for(i=0;i<tailleficT;i++){ /*^pourquoi taillefict ??? Mets plutôt cmptp*/
TermTab[j]=(char*)malloc((cmptc+1)*sizeof(char)); /*C'est i qu'il faut mettre et pas j (peut etre erreur de frappe de ta part ;))*/
}
oliver91
Messages postés
51
Date d'inscription
lundi 21 mai 2007
Statut
Membre
Dernière intervention
9 septembre 2009
3
22 mai 2007 à 23:25
22 mai 2007 à 23:25
Merci pour ce que tu as corrigé mais c'est correct (j'en suis certain puisque ça marche et que ça me retourne le bon résultat ;) )
Sinon, voici comment j'apelle les fonctions dans le main :
et :
Merci de ton aide à venir ...
Sinon, voici comment j'apelle les fonctions dans le main :
apartirdeTermFic(TermTab,cmptp);
et :
affichTerm(TermTab,cmptp);
Merci de ton aide à venir ...
oliver91
Messages postés
51
Date d'inscription
lundi 21 mai 2007
Statut
Membre
Dernière intervention
9 septembre 2009
3
22 mai 2007 à 23:50
22 mai 2007 à 23:50
Puisque tu le demandes si gentiment (lol) :
TermTab=(char**)malloc(cmptp*sizeof(char*)); for(i=0;i<tailleficT;i++){ if(TermTabInt[i]!=';'){ cmptc++; }else{ TermTab[j]=(char*)malloc((cmptc+1)*sizeof(char)); for(k=0;k<cmptc;k++){ TermTab[j][k]=TermTabInt[MemCmpt+k]; } TermTab[j][k]='\0'; MemCmpt=MemCmpt+cmptc+1; cmptc=0; j++; } }
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
23 mai 2007 à 00:20
23 mai 2007 à 00:20
lol
Sinon tu peux faire :
char **init(int taille) {
les malloc sont ici
return tmp;
}
int main() {
char **tab;
tab=init(taille);
return 0;
}
J'espère que ça t'aidera
Bonne chance
Sinon tu peux faire :
char **init(int taille) {
les malloc sont ici
return tmp;
}
int main() {
char **tab;
tab=init(taille);
return 0;
}
J'espère que ça t'aidera
Bonne chance