#1 Le 05/05/2007, à 22:00
- Sysko le prospecteur
[c] allocation dynamique d'un tableau de tableau via une fonction
BIen le bonsoir
j'ai à faire à un petit problème lors de la création d'un programme
j'ai un fichier "machin.txt "
avec dedans des chiffres ( et je dit bien des chiffres , pas des nombres ) agencé de la manière suivante
0123456789
1234568900
1123345687
3221123211
etc...
ces chiffres je veux les recupéré dans un tableau à deux dimension du type tableau[nbrChiffreParLign][nbrDeLigne]
via un fgetc et un switch ( la desus pas de problème , avec un tableau de taile fixe et un fichier cela marche correctement )
( on fait un saut de ligne du tableau à chaque fois que le programme lit un '\n' et on fini quand on rencontre EOF )
je voudrais que le remplissage du tableau se fasse via une fonction qui :
1 - prenne un pointeur en argument ( du style int** futurtableau ) ( même si je ne sais pas combien de * mettre ^^ ( je pense que cela doit être comme cela
2- lisent le fichier et selon le nombre de caractère par ligne ( avec toutes les lignes de même longueur pour un même fichier ) et le nombre de ligne ( idem le nombre de ligne ne bougera pas durant l'éxécution du programme mais il pourra différé selon les fichiers ) , malloc de la memoire pour un tableau à 2 dimensions de taille adequate
3 - que je puissent réutiliser ce tableau dans le main
donc si quelqu'un pouvait , par pure gentillesse , me donner une fonction qui puisse faire cela ou au moins quel type de pointeur utilisé et les malloc à faire , j'en serais reconnaissant
sinon j'ai deja trouver des moyens de contourner le problème en n'utilisant qu'un tableau simple mais voulant progresser j'aimerais donc cela m'intéresse vraiment de savoir comment on résoud ce problème de façon " honnête "
d'avance merci pour vos réponses éclairées
ps: la totalité de mes tentatives m'ont donné un dépassement de mémoire ( segmentation fault / core dumped )
Sysko
Dernière modification par Sysko le prospecteur (Le 05/05/2007, à 22:01)
Projet tatoeba : projet collaboratif visant à créer un corpus de phrases d'exemples traduites dans le plus de langues possibles
Hors ligne
#2 Le 05/05/2007, à 22:21
- hypno
Re : [c] allocation dynamique d'un tableau de tableau via une fonction
Il n'y a pas de fonction miracle qui fait ca.
Il va falloir la coder toi meme.
Commence par declarer ton tableau de pointeurs: int** tab
Ensuite tu l'alloue: tab = malloc(sizeof(*tab) * nbligne)
ensuite il faut allouer chaque ligne:
tab[0] = malloc(sizeof(int) * 10)
tab[1] = malloc(sizeof(int) * 10)
etc.
Avec un while(i < nbligne) donc
voila ton tableau a 2 dimensions est pret.
Ensuite tu traite les ligne une par une comme tu semble savoir le faire.
Retourne le tab pour recuperer ton tableau.
N'oublie pas de faire un free de chaque ligne du tableau ansi que du tab apres utilisation
#3 Le 06/05/2007, à 10:53
- Watchwolf
Re : [c] allocation dynamique d'un tableau de tableau via une fonction
si tu alloue ton tableau dans la fonction il faut que tu passe 3 étoiles (***).
pseudo code c
fct(int ***t)
{
int i;
//recuperation de la largeut l et de la hauteur h
*t = malloc(sizeof(int)*h);
for(i = 0; i<h; i++)
(*t)[i] = malloc(sizeof(int)*l);
tu peut aussi au debut faite int **t2 = *t; pour simplifier la suite
Hors ligne
#4 Le 06/05/2007, à 22:30
- Sysko le prospecteur
Re : [c] allocation dynamique d'un tableau de tableau via une fonction
merci donc voila la partie d'allocartion de ma fonnction
fct ( int ***futurTableau )
int ** t2 = *futur tableau
t2 = malloc( sizeof(*t2)*nombreDeLigne); // on alloue de la memoire
// pour un tableau de "nombreDeligne " tableaux
for(i = 0; i<nombreDeLigne; i++)
t2[i] = malloc( sizeof(int) *longueur); // on donne à chaque tableau la taille d'une ligne de fichier
voila encore merci
Projet tatoeba : projet collaboratif visant à créer un corpus de phrases d'exemples traduites dans le plus de langues possibles
Hors ligne