Lecture fichier colone variable

Fermé
Sportif_C - 28 févr. 2012 à 14:39
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 - 28 févr. 2012 à 15:20
Bonjour,


Je souhaite stocker un fichier texte binaire (les valeurs sont séparés par un espace) dans une matrice sachant que le nombre de colonne est varibale. Du coup je ne sais pas comment faire pour allouer mon mémoire?
Des idées?
Merci.

int main()
{
   FILE *fichier;
 int nb_lignes;
 int ligne_lue[512];


 //test d'ouverture du fichier
 fichier = fopen(fichier.txt, "r"); // ouvrir en lecture
  if(fichier == NULL){
      printf("Impossible d'ouvrir le fichier");
      exit(1);
  }
// compter et afficher les lignes du fichier
  nb_lignes = 0;
  while(fgets(ligne_lue, 512, fichier) != NULL){
    printf("\t%s", ligne_lue);
    nb_lignes++;
  }
  printf("le fichier %s comporte %d lignes\n", nom_fic, nb_lignes);
  
//allocation de mémoire de matrice??
    int **mat
fclose(fichier);
}
A voir également:

1 réponse

Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 663
28 févr. 2012 à 15:19
plusieurs possibilités :

* utiliser un tableau assez grand pour stocker toute taille que tu utiliseras (simple à programmer, mais pas toujours possible et potentiellement très gourmand en mémoire, imagine une ligne de 100'000 et 100'000 lignes de 1)


* utiliser une structure dynamique comme des listes chainées (accès potentiellement lent à l'accès et plus compliqué à programmer mais efficace au niveau mémoire)

* redimensionner tes différentes lignes (car une matrice = un tableau de pointeur pour chaque ligne) au besoin. : ex : tu prépares des lignes de 100 cases, si à un moment tu lis 100 valeurs, tu redimensionnes ton tableau à 200 (ou en crée un nouveau et copie les valeurs dedans)
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 663
Modifié par Pacorabanix le 28/02/2012 à 15:20
ou encore : préciser dans ton fichier, pour chaque ligne, le nombre d'entrées au début de la ligne; comme ça tu crées un tableau de la bonne dimension au début de la ligne une bonne fois pour toutes. Beaucoup mieux que ma dernière proposition.
0