
Envoyé par
drakop
Que veut-tu dire par multiplier les opérations d'entrées-sorties ?
Ton algo consiste à parcourir le fichier texte une première fois afin de déterminer le nombre de lignes qui y sont contenues. Cela t'oblige à considérer toutes les informations du fichier, puisqu'il faut bien vérifier chaque caractère jusqu'à la fin du fichier (fgets le fait pour toi, mais c'est ce qui est fait en interne car il faut bien détecter '\n', '\r' et "\r\n"...).
Donc quitte à tout lire, autant en profiter pour stocker les infos et ne faire qu'une passe, plutôt que de rewind et relire le fichier une seconde fois.

Envoyé par
drakop
Quand tu dis stocker les valeurs dans un tableau de chaîne tu veux dire les mots du fichier ?
Je ne sais pas comment ton fichier est structuré, j'imagine un mot par ligne ? Alors tu peux copier le contenu de chaque ligne (moins le ou les caractère(s) de fin de ligne) dans un élément du tableau. Si tu n'as pas encore vu l'allocation dynamique (malloc et compagnie...), commence avec un tableau statique d'une taille telle qu'aucun fichier d'entrée ne contiendra jamais plus de lignes, par exemple :
const char *words[4096]; // room for no more than 4096 words

Envoyé par
drakop
D'accord pour fgets, je m'en doutais un peu, mais comment l'utiliser avec le nombre généré aléatoirement du coup ?
Indices : un compteur, une valeur limite, un buffer de destination, une boucle...
Lis bien la page de manuel de fgets surtout, il y a des pièges.
Partager