Fseek c

Résolu/Fermé
didy_gwatinik Messages postés 352 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 30 mars 2010 - 4 mars 2008 à 18:57
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 1 oct. 2014 à 14:41
Bonjour,
Est ce que quelqu'un peut m'expliquer comment fonctione fseek en C car j'ai fait un projet où je dois faire un carnet d'adresse et j'aimerai afficher à l'écran que certaines informations. Comment faire???

6 réponses

cijad Messages postés 30 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 8 mai 2008 60
4 mars 2008 à 20:48
Salut,

fseek s'utilise de la manière suivante :
fseek(pf,deplacement,reference)

Elle te permet de placer le curseur à une position donnée pour réaliser un accès direct dans un fichier. Les paramètres sont :
  FILE *pf; // le pointeur vers le fichier en question
  long deplacement; // le déplacement à réaliser
  int reference; //point de référence pour le déplacement

la nouvelle position sera decalée d'un nombre d'octets égal au paramètre deplacement depuis :

-le début du fichier si reference vaut SEEK_SET (valant en fait 0)
-la position courante si reference vaut SEEK_CUR (valant en fait 1)
-la fin du fichier si reference vaut SEEK_END (valant en fait 2)

Pour finir, il faut bien sur inclure la bibliothèque stdio.h

voilà je crois que j'ai tout dis
43
didy_gwatinik
4 mars 2008 à 21:01
ok, mais tu peux m'expliquer un peu plus seek_set, seek_cur et seek_end en fait je ne comprens pas trop leurs valeurs
0
cijad Messages postés 30 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 8 mai 2008 60 > didy_gwatinik
4 mars 2008 à 21:57
eh bien, il faut que tu considères qu'il y a un curseur qui parcourt ton fichier d'octet en octet. Chaque fois que tu utilises un octet de ce fichier le curseur se déplace d'une case. A la prochaine utilisation il prendra l'octet qui est actuellement pointé par le curseur, puis le décalera et ainsi de suite.
Imaginons que tu ais déjà utilisé ton fichier, par exemple tu l'as parcourus et tu a reconnu un certain mot, si tu veux sauter les x octets suivants, tu devra écrire :
fseek(pfichier,x,SEEK_CUR);
il va déplacer le curseur de x octets depuis ta position actuelle. Donc SEEK_CUR te donnera un déplacement relatif à ta position actuelle.

Si par contre ce qui t'intéresse c'est d'aller te placer à un endroit dont tu connais la position x en octet par rapport au début du fichier, tu devra saisir :
fseek(pfichier,x,SEEK_SET);
il va automatiquement repartir au début du fichier et déplacer le curseur de x octets jusqu'à la position voulue.

Meme chose si tu connais la position de ton octet par rapport à la fin, mais tu remplace par SEEK_END.


Si c'était ta question SEEK_SET, SEEK_CUR et SEEK_END sont déjà prédéfinis dans la bibliothèque stdio.h (au moyen d'un #define). Ils valent respectivement 0, 1 et 2 mais il vaut mieux mettre les valeurs en texte car c'est plus explicite. Par contre cela implique bien sur que tu dois respecter les mettre en majuscule.

dis moi si tu as mieux compris cette fois ^^

PS : Bien sur ton déplacement peut être négatif (il vaut mieux pour le seek_end).
0
salut,
j'ai deux fichier je veux copier et coller des données d'une fichier à un autre
merci ^_^
0
rabia ok
0