Read + double tableau en C

Résolu/Fermé
Linkinou - 7 nov. 2010 à 22:54
 Linkinou - 7 nov. 2010 à 23:35
Bonjour tous le monde,

Voila je débute en programmation et je bloque sur un problème depuis un moment.
Comment faire pour récupérer chaque ligne d'un fichier texte pour les mettre dans un double tableau simplement avec des read/write/malloc.. ? Est-ce possible ?

Pour l'instant ma fonction lit simplement le fichier.

J'ai surtout du mal a voir comment allouer la taille a mon tableau sachant que le nombre de caractere du fichier lu peut varier.
Faire une fonction qui compte le nombre de caractere d'un fichier ? Oui mais comment lui dire "tant que tu n'est pas a la fin du fichier"... ?

Merci d'avance.


A voir également:

4 réponses

loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
7 nov. 2010 à 23:01
Si on ne peut connaître à l'avance la taille d'une allocation, alors il faut penser à utiliser la fonction realloc.
Bonne continuation.
0
Arya Dröttningu Messages postés 581 Date d'inscription mardi 12 janvier 2010 Statut Membre Dernière intervention 3 janvier 2019 157
7 nov. 2010 à 23:03
Salut,
Tu peux faire un truc genre :
Tu ouvres ton fichier et tu utilise la fonction fseek :
fseek (descripteurFichier, 0, SEEK_END) qui va à la fin du fichier
et ensuite utiliser ftell(descripteurFichier); qui lit la position courante par rapport au début du fichier
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
7 nov. 2010 à 23:19
Je ne suis pas sûr de comprendre ce que tu entends par "double tableau", je comprends bien que tu puisses vouloir stocker les lignes de ton fichier dans un tableau, mais pourquoi double ?
Si tu entends par là que la position de chaque "début de ligne" du premier tableau sera indexée dans un deuxième tableau, il paraît alors plus facile de traiter le problème.
Tu lis tous tes caractères de ton fichier et tu les mets tous dans la "première case" de ton tableau (attention à ne pas prendre un fichier trop gros !)
Puis tu remplaces tous les '\n' par des '\0' en indexant à chaque fois la position de ce changement dans ton deuxième tableau.

Exemple :

Fichier texte

Hello World !
Ceci est un grand classique de l'informatique
@+

Tableaux avant modif

["Hello World !\nCeci est un grand classique de l'informatique\n@+"]

[x] // x est la position du H

Tableaux après modifs

["Hello World !\0Ceci est un grand classique de l'informatique\0@+"]
<=>
["Hello World !","Ceci est un grand classique de l'informatique","@+"]

[x, x+14, x+60]
0
Merci a vous, vous m'avez beaucoup aider.

Bien a vous,
0