Si vous avez un format binaire, vous aurez probablement finir par créer une structure de données (soit un struct
ou un simple tableau d'un certain type) qui contiendra le contenu binaire représenté par une ligne dans votre exemple.
En supposant pour le moment que le format est simplement des entiers l'un à côté de l'autre dans la mémoire, le programme suivant devrait fonctionner.
#include <stdio.h> // printf
#include <stdlib.h> // malloc
#include <stdint.h> // standard int sizes (eg: int16_t, 16bit integer)
typedef int16_t coordinate[2]; // just two integers, but convenient
int main(int argc, char ** argv){
FILE * fp = fopen(argv[1], "rb");
int16_t number_of_coordinates = 0;
// read number of coordinates into our variable
fread(&number_of_coordinates, sizeof(int16_t), 1, fp);
printf("%d\n", number_of_coordinates);
// allocate space for our coordinates;
coordinate * coordinates = malloc(sizeof(coordinate) * number_of_coordinates);
// read all the coordinates at once
fread(coordinates, sizeof(coordinate), number_of_coordinates, fp);
// print them out just to prove it worked
int i;
for (i = 0; i < number_of_coordinates; i++){
printf("%d %d\n", coordinates[i][0], coordinates[i][1]);
}
free(coordinates); // always free what you malloc
fclose(fp); // always close what you open
}
EDIT Je mis à jour le code pour corriger quelques erreurs de syntaxe. Cela devrait maintenant fonctionner.
Quel problème avez-vous? – abacles
vos données binaires n'ont probablement pas de saut de ligne – dvhh
Le premier bloc de code * n'est pas * à quoi ressemble réellement le fichier, n'est-ce pas? – immibis