[C] Init d1 Tableau dynamique en parametre...
oliver91
Messages postés
51
Date d'inscription
Statut
Membre
Dernière intervention
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonsoir,
Je souhaiterai savoir s'il est nécessaire, voire obligatoire, de faire les malloc pour allouer de l'espace mémoire pour un tab dyn à 2 dimensions dans le main ?
Ou bien puis-je simplement déclarer ce tableau ds le main puis lui allouer de l'espace mémoire ds une fonction ? ceci ne me fait-il pas perdre les données (et l'espace mémoire) du tab en sortant de la fonction ?
Comment faire ?
Je souhaiterai savoir s'il est nécessaire, voire obligatoire, de faire les malloc pour allouer de l'espace mémoire pour un tab dyn à 2 dimensions dans le main ?
Ou bien puis-je simplement déclarer ce tableau ds le main puis lui allouer de l'espace mémoire ds une fonction ? ceci ne me fait-il pas perdre les données (et l'espace mémoire) du tab en sortant de la fonction ?
Comment faire ?
A voir également:
- [C] Init d1 Tableau dynamique en parametre...
- Tableau croisé dynamique - Guide
- Tableau word - Guide
- Exemple tableau croisé dynamique télécharger - Télécharger - Tableur
- Tableau ascii - Guide
- Trier un tableau excel - Guide
8 réponses
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.
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
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.
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
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 ;))*/
}
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 ...
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++; } }