problème d'allocation de tableau

Le
Rim msedi
Bonsoir,

Je voulais copier le contenu de fichier "exemple.txt" dans un tableau
dynamique tab de taille inconnue en avance. J'utilise le tableau pour
faciliter la manipulation aprs.
Chaque ligne de fichier contient une chaine de caractre :
nom
prenom
age
adresse
emploi

Voici le programme:
Code :


int allocation(int N)
{
FILE *fp;
char *t,s[100],attribut[32];
int i;

t = (char *) malloc((N)*sizeof(char));
fp=fopen("exemple.txt","r");

for(i=0; i < N;i++)
{
fgets(s, 100, fpNS);
sscanf(s,"%s",attribut);
strcpy(t[i],attribut);
printf("%s ",t[i]);
}

fclose(fp);
return 0;
}

int main ()
{
FILE *fp;
char s[100];
int N=0;
//N est calculer : c'est le nombre des lignes de fichier
"attribut.txt" puisque chaque ligne de ce fichier contient un attribut
qui est l'objet de la combinaison
while (fegts(s,100,fp))!=NULL)
N++;
allocation(N);
fclose(fp);
return 0;
}


J'ai remarqu que le problme dclenche juste aprs l'ouverture de
fichier "attribut.txt" dans la fonction allocation(N).
Comment on rsoudre ce problme ?

Je serais trs reconnaissant pour vos aides.

Merci.
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Rim msedi
Le #19971481
Bonsoir,

J'ai modifié un peu le programme :

#include #include #include int allocation(int N)
{
FILE *fp;
char *t,s[100],attribut[32];
int i;

t = (char *) malloc((N)*sizeof(char));
fp=fopen("exemple.txt","r");

for(i=0; i < N;i++)
{
fgets(s, 100, fp);
sscanf(s,"%s",attribut);
strcpy(t[i],attribut);
printf("%s ",t[i]);
}

fclose(fp);
return 0;
}

int main ()
{
FILE *fp = NULL;
char s[100];
int N=0;
//N est calculer : c'est le nombre des lignes de fichier
"attribut.txt" puisque chaque ligne de ce fichier contient un attribut
qui est l'objet de la combinaison
while (fgets(s,100,fp)!= NULL)
N++;
allocation(N);
fclose(fp);
return 0;
}
Christian ASTOR
Le #19974381
On 22 août, 20:14, Rim msedi
Bonsoir,

J'ai modifié un peu le programme :



Pas bon.
Si on alloue une seule fois, on lit dans &t[i].
La méthode plus classique est avec 2 mallocs (tableau + pour chaque
éléments) => 1er exemple "Arrays of strings" :
http://www.cs.cornell.edu/courses/cs113/2007fa/Lectures/L08cs113fa07-6up.pd f
Publicité
Poster une réponse
Anonyme