malibu68 a écrit :
Bonjour,
Je vous explique, j'ai un fichier texte qui contient des données en colonnes : 1 colonne de float et 6 autres de int.
Les données arrivent au fur et à mesure dans ce fichier texte.
Je souhaite donc pouvoir lire ces données ligne par ligne et si la ligne n'est pas encore là, attendre quelle apparaisse.
Autre info : le fichier contiendra plusieurs milliers de ligne, donc il faudrait un code qui ne prenne pas trop de temps.
J'arrive à lire la 1ere ligne du fichier comme il faut avec la commande fscanf cependant je n'arrive pas à pouvoir choisir la ligne à traiter.
D'avance merci si vous arrivez à éclairer ma lanterne.
|
Grosso-modo, en C, pour mnipuler un fichier, tu as
- des fonctions d'ouverture/fermeture => fopen()/fclose()
- des fonctions de lecture => fscanf(), fgets(), fgetc(), fread()
- des fonctions d'écriture => fprintf(), fputs(), fputc(), fwrite()
- des fonctions de déplacement => fseek()
- des fonctions un peu spéciales => fflush(), ftell(), feof()
Rien d'autre. C'est à toi à utiliser ces fonctions pour créer l'algo dont t'as besoin. Par exemple, si tu veux récupérer la 18° ligne, il te faut
- lire 17 lignes pour rien
- lire la ligne suivante
Ensuite, étant donné que ces fonctions sont bufférisées, je ne connait pas le comportement de ce genre de fonctions quand tu lis d'un coté un fichier qui se remplit de l'autre coté.
Si tu bosses sur Unix et apparentés, t'as aussi des fonctions plus bas niveau qui sont
- des fonctions d'ouverture/fermeture => open()/close()
- une fonction de lecture => read()
- une fonction d'écriture => write()
- des fonctions de déplacement => seek()
Ces fonctions plus bas niveau travaillent directement sur le fichier donc la manipulation de "je lis pendant que qqun d'autre écrit" a plus de chances de réussir...
---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.