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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
|
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
int nb_lignes (FILE *fp)
{
int n=0, c;
while ((c = fgetc(fp)) != EOF)
{
if (c == '\n')
{
n++;
}
}
return n;
}
unsigned long file_how_much_word (FILE *p_file)
{
long cnt_w = 0;
if (p_file != NULL)
{
int c = 0;
int mark = 0;
while ((c = fgetc (p_file)) != EOF)
{
if (! isspace (c) && mark == 0)
{
cnt_w++;
mark = 1;
}
else if (isspace (c))
{
mark = 0;
}
}
fclose (p_file);
}
return cnt_w;
}
float *lire_matrice(char chemin[100])
{
int nbligne, nbcolonne,i,j;
unsigned long nbmots;
FILE *ReadInput;
ReadInput = fopen (chemin, "r" ) ;
if(ReadInput == NULL)
{
printf("Le fichier des coordonnées NARR n'existe pas");
}
else
{
nbligne= nb_lignes(ReadInput);
nbmots = file_how_much_word (ReadInput);
nbcolonne = nbmots/nbligne;
fclose(ReadInput);
}
float *tbl = malloc(sizeof(float) * nbligne * nbcolonne);
ReadInput = fopen (chemin, "r" ) ;
if(ReadInput == NULL)
{
printf("Le fichier des coordonnées NARR n'existe pas");
}
else
{
for (i=0;i<nbligne;i++)
{
for (j=0;j<nbcolonne;j++)
{
fscanf(ReadInput,"%f ",tbl);
}
fscanf(ReadInput,"\n");
}
}
// initialisation du tableau
// retourne le tableau alloué
// ne pas oublier de le liberer avec free() quand on n'en a plus besoin
return tbl;
}
int main(int argc, char *argv[])
{
float *tbl;
tbl = lire_matrice(argv[1]);
return 1;
} |