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
| #include <stdio.h>
#include <stdlib.h>
#define TAB_SIZE(tab) ((int) (sizeof (tab)/sizeof *(tab)))
int main(void)
{
int err = EXIT_SUCCESS;
int i;
int rc;
FILE *fp = NULL;
double tableau_in[100];
/* On commence par ouvrir le fichier */
fp = fopen("file.bin", "rb");
/* Comme toujours, on teste la valeur de retour de fopen() */
if (fp != NULL) /* Ouverture du fichier OK */
{
/* On lit les données binaires contenues dans le fichier en supposant
que chaque valeur est codée sur sizeof(double) bytes, et qu'il n'y
a pas de problème d'endianness, ni de bytes d'alignement, etc.
Ca fait pas mal de si... */
rc = fread(tableau_in, sizeof *tableau_in, TAB_SIZE(tableau_in), fp);
/* Si fread() ne renvoie pas TAB_SIZE(tableau_in), soit la fin de
fichier a été rencontrée, soit une erreur de lecture a eu lieu */
if (rc == TAB_SIZE(tableau_in)) /* Lecture OK */
{
for (i = 0; i < TAB_SIZE(tableau_in); ++i)
{
printf("%f ", tableau_in[i]);
}
printf("\n");
}
else /* feof() est vrai ou ferror() est vrai */
{
if (feof(fp) != 0)
{
fprintf(stderr, "la fin de fichier a été recontrée\n");
err = EXIT_FAILURE;
}
else
{
fprintf(stderr, "Erreur de lecture!\n");
err = EXIT_FAILURE;
}
}
/* On ferme le fichier une fois qu'on en a plus besoin */
fclose(fp), fp = NULL;
}
else /* Impossible d'ouvrir le fichier */
{
fprintf(stderr, "Impossible d'ouvrir le fichier file.bin");
err = EXIT_FAILURE;
}
return err;
} |
Partager