Fichier [Résolu]

Signaler
Messages postés
4
Date d'inscription
dimanche 27 mai 2007
Statut
Membre
Dernière intervention
24 janvier 2010
-
Nabluk
Messages postés
4
Date d'inscription
dimanche 27 mai 2007
Statut
Membre
Dernière intervention
24 janvier 2010
-
Bonjour, j'espère que vous pourrez m'aider...

J'ai écris un programme en C qui me crée un fichier contenant environ 10 000 000 de nombre en une colonne.
Je voudrais un moyen de lire le dernier nombre du fichier sans parcourir tout le fichier car cela prend trop de temps en sachant que le but est d'augmenter encore le nombre de chiffre.

Merci.

6 réponses

Messages postés
14744
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
21 février 2020
91
Salut,
fseek() te permet d'aller à la fin d'un fichier en spécifiant l'option SEEK_END


@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
4
Date d'inscription
dimanche 27 mai 2007
Statut
Membre
Dernière intervention
24 janvier 2010

Re,

Si j'écris le code suivant :
int n;
FILE *fichier = fopen("liste.txt","r");
fseek(fichier, 0, SEEK_END);
fscanf(fichier,"%d",&n);
printf("%d",n);
fclose(fichier);

Il ne m'écrit pas le dernier nombre de la liste mais "l'adresse" (je crois) de EOF (pas sur).
En gros, il place le curseur juste en dessous du dernier élément. Ceci semble normal vu que chaque élément est un entier suivi d'un retour à la ligne.
Comment dois-je faire pour lire le dernier nombre?
Messages postés
14744
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
21 février 2020
91
Tu peux parcourir le fichier à l'envers, jusqu'à trouver 2 retours à la ligne. Ton dernier entier devrait être compris entre ces 2 caractères, non?

...
10\n
11\n
EOF


@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
4
Date d'inscription
dimanche 27 mai 2007
Statut
Membre
Dernière intervention
24 janvier 2010

Une idée du code que je peux utiliser pour lire le dernier élément en lisant à l'envers ?

Merci des réponses.
Messages postés
1
Date d'inscription
dimanche 24 janvier 2010
Statut
Membre
Dernière intervention
24 janvier 2010

salut je suis nouveau ici je cherche le cours de fichiers dans l'algorithme et merci
Messages postés
4
Date d'inscription
dimanche 27 mai 2007
Statut
Membre
Dernière intervention
24 janvier 2010

Re,

Quelqu'un pourrait m'aider à résoudre mon problème, je repose ma question :
Je voudrais lire le dernier élément d'une liste de nombre dans un fichier. Cette liste contient environ 10 000 000 de nombres inscrit comme suit : (nombre)\n.
Quelqu'un aurait une idée de code pour ne pas lire tous les nombres parce que c'est beaucoup trop long??

Merci pour votre aide.