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 après.
Chaque ligne de fichier contient une chaine de caractère :
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 problème déclenche juste après l'ouverture de
fichier "attribut.txt" dans la fonction allocation(N).
Comment on résoudre ce problème ?

Je serais très reconnaissant pour vos aides.

Merci.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
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