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???
fseek(pf,deplacement,reference)
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
char c; // 1 octet short a; //2 octets unsigned int b; //2 octets int d; // 4 octets long e; // 4 octets unsigned long f; // 4 octets float g; // 4 octets double h; // 8 octets long double i; // 10 octets
FILE* pfichier; ftell(pfichier);par exemple, tu est arrivé à un endroit et tu veux recopier la valeur à la fin du fichier et revenir ensuite à cet endroit :
long position; fread(adresse,taille,nombre,pfichier);//lit un certain nombre d'éléments position=ftell(pfichier);//retiens la position a la suite de ces éléments fseek(pfichier,0,SEEK_END);//va a la fin fwrite(adresse,taille,nombre,pfichier);//ecrit les éléments fseek(pfichier,position,SEEK_SET);//retourne a la position initiale
fseek(3*sizeof(POINT_t)); //sizeof(type) te donne la taille d'un certain type //... c'est tres util pour les structures
Vous n'aimez pas le lifting de Facebook ? Le site Mashable propose cinq étapes pour revenir à l'ancienne présentation du réseau social.
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 :
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 :
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).