Read + double tableau en C

Résolu
Linkinou -  
 Linkinou -
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   Statut Membre Dernière intervention   148
 
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   Statut Membre Dernière intervention   157
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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
Linkinou
 
Merci a vous, vous m'avez beaucoup aider.

Bien a vous,
0