Fseek c

Résolu
didy_gwatinik Messages postés 352 Date d'inscription   Statut Membre Dernière intervention   -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
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   Statut Membre Dernière intervention   60
 
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
 
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   Statut Membre Dernière intervention   60 > didy_gwatinik
 
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
hanona
 
salut,
j'ai deux fichier je veux copier et coller des données d'une fichier à un autre
merci ^_^
0
vdsfby
 
rabia ok
0