cs_amentag
Messages postés13Date d'inscriptionmardi 7 novembre 2006StatutMembreDernière intervention 5 juin 2008
-
28 mai 2008 à 22:06
cs_amentag
Messages postés13Date d'inscriptionmardi 7 novembre 2006StatutMembreDernière intervention 5 juin 2008
-
29 mai 2008 à 13:53
Bonjour.
Je dispose d'un fichier texte contenant plusieurs mots (sous forme d'une liste) et j'aimerai les récuperer afin de les stocker dans un tableau de caracteres.
Pourriez vous m'aidez?
Désolé du double post mais l'énoncé de ma précédente question etait incorrecte.
Merci.
A voir également:
Recuperer des mots dans un fichier texte et les stocker dans un tableau.
cs_jfrancois
Messages postés482Date d'inscriptionvendredi 26 août 2005StatutMembreDernière intervention 5 décembre 20092 29 mai 2008 à 13:15
Bonjour,
La fonction fread() (file read) lit "lSize" octets (le "1") du fichier dans "buffer". Si "lSize" est suffisamment grand (supérieur ou égal à la taille du fichier), c'est tout le fichier qui est lu d'un coup dans "buffer".
Dans "buffer" les mots sont séparés par un caractère contenant le code binaire 10 (new line).
Dans "result" il y a la taille réellement lue = (taille du fichier - nombre de lignes lu) car dans le fichier (Windows !) il y a aussi un code binaire 13 (retour chariot) devant le code 10 mais il est éliminé par fread().
// read the file into the buffer: <-- plus parlant que copy
BunoCS
Messages postés15474Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention22 avril 2024103 29 mai 2008 à 10:02
Salut,
Quel est le souci? Récupérer des mots dans un fichier ou bien les stocker dans un tableau?
Pour le 1er: fopen(), fread(),....,fclose()
Pour le 2nd: je te conseille d'utiliser un vecteur car tu ne connais pas forcément le nombre de chaines à lire...
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
cs_amentag
Messages postés13Date d'inscriptionmardi 7 novembre 2006StatutMembreDernière intervention 5 juin 2008 29 mai 2008 à 12:38
Salut,
Merci de m'avoir répondu.^^
J'ai deux question:
Comment fonctionne la fonction fread()?
Elle lit le fichier texte d'un seul coup? si oui ou est-il stocké? (un exemple serai vraiment sympatique^^). Voici un exemple d'utilisation que j'ai trouvé:
FILE * pFile;
long lSize;
char * buffer;
size_t result;
....
// allocate memory to contain the whole file:
buffer = (char*) malloc (sizeof(char)*lSize);
if (buffer == NULL) {fputs ("Memory error",stderr); exit (2);}
// copy the file into the buffer:
result = fread (buffer,1,lSize,pFile);
if (result != lSize) {fputs ("Reading error",stderr); exit (3);}
Or cette ligne (en rouge) n'est écrit qu'une seule fois et n'est inclut ni dans un while ni dans une boucle fort. Je l'ai essayé, et en fait toute la liste de mot à été inclut dans "buffer" qui est un tableau (mais pas a double entré ).Donc je ne voit pas de moyen pour acceder a un mot en particulier.
cs_amentag
Messages postés13Date d'inscriptionmardi 7 novembre 2006StatutMembreDernière intervention 5 juin 2008 29 mai 2008 à 13:53
Merci jfrancois (ainsi que Buno).
Avant d'avoir lu ton message j'etai parvenu à mes fin mais en utilisant la fonction fgetc() qui lit caractere par caractere le fichier texte (je me sui en effet rendu compte que ce qui separait les mot etait le retour à la ligne '\n' ...comment ne l'avai-je pas remarqué plus tot : j'ai cru un moment que c'etait '\0' fin de tableau ce qui n'est pas le cas dans un fichier texte. J'ai donc pu rentrer tous cela dans un tableau) MAIS ta solution est bien plus rapide et optimise mon programme car tout est lu d'un coups.
Merci.