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=E8s.
Chaque ligne de fichier contient une chaine de caract=E8re :
nom
prenom
age
adresse
emploi
Voici le programme:
Code :
int allocation(int N)
{
FILE *fp;
char *t,s[100],attribut[32];
int i;
t =3D (char *) malloc((N)*sizeof(char));
fp=3Dfopen("exemple.txt","r");
int main ()
{
FILE *fp;
char s[100];
int N=3D0;
//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))!=3DNULL)
N++;
allocation(N);
fclose(fp);
return 0;
}
J'ai remarqu=E9 que le probl=E8me d=E9clenche juste apr=E8s l'ouverture de
fichier "attribut.txt" dans la fonction allocation(N).
Comment on r=E9soudre ce probl=E8me ?
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; }
Bonsoir,
J'ai modifié un peu le programme :
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
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");
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;
}
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
On 22 août, 20:14, Rim msedi wrote:
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
On 22 août, 20:14, Rim msedi <msedi...@gmail.com> wrote:
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
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