Lecture fichier colone variable
Sportif_C
-
Pacorabanix Messages postés 4122 Date d'inscription Statut Membre Dernière intervention -
Pacorabanix Messages postés 4122 Date d'inscription Statut Membre Dernière intervention -
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.
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:
- Lecture fichier colone variable
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
1 réponse
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)
* 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)
Pacorabanix
Messages postés
4122
Date d'inscription
Statut
Membre
Dernière intervention
663
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.