1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| int allocation(int N, char *fichier)
{
FILE *fp;
char **t,s[100],attribut[32];
int i;
t = malloc(N * sizeof(*t));
if(t== NULL)
{
fprintf(stderr, "probleme d'allocation\n");
return -1;
}
fp=fopen(fichier,"r");
if (fp == NULL)
{
fprintf(stderr, "impossible d'ouvrier le fichier %s\n", fichier);
free(t);
return -2;
}
// Initialiser le tableau (pour l'instant ça ne sert à rien mais plus tard, ça pourrait être utile)
for(i=0; i < N;i++) t[i]=NULL;
//copier le contenu du fichier dans le tableau
for(i=0; i < N;i++)
{
fgets(s, 100, fp);
sscanf(s,"%s",attribut);
if ((t[i] = strdup(attribut)) == NULL)
{
fprintf(stderr, "erreur alloc t[%d]\n", i);
for (int j=0; j < i; j++) free(t[j]);
free(t);
fclose(fp);
return -3;
}
printf("%s\n",t[i]);
}
fclose(fp);
//affichage le contenu de tableau
for(i=0;i<N;i++)
printf("t[%d]=%s\n",i,t[i]);
for (i=0; i < N; i++) free(t[i]);
free(t);
return 0;
} |
Partager