C ++ fseek () - Bibliothèque standard C ++

La fonction fseek () en C ++ définit l'indicateur de position de fichier pour le flux de fichier donné.

La fonction fseek () est définie dans le fichier d'en-tête.

prototype fseek ()

 int fseek (FILE * stream, long offset, int origin);

Si le fichier est ouvert en mode binaire, la nouvelle position du pointeur de fichier est exactement décalée d'octets par rapport à l'origine.

Si le fichier est ouvert en mode texte, les valeurs prises en charge pour le décalage sont:

  • Zéro: Cela fonctionne avec n'importe quelle valeur d'origine, c'est-à-dire SEEK_SET, SEEK_CUR et SEEK_END.
  • Valeur renvoyée par un appel à ftell (stream): Cela ne fonctionne qu'avec l'origine de SEEK_SET.

Si le flux est orienté large, les restrictions des flux texte et binaire sont appliquées, c'est-à-dire que le résultat de ftell est autorisé avec SEEK_SET et le décalage nul est autorisé à partir de SEEK_SET et SEEK_CUR, mais pas de SEEK_END.

La fonction fseek annule également les effets de ungetc et efface l'état de fin de fichier, le cas échéant.

Si une erreur de lecture ou d'écriture se produit, ferror est défini et la position du fichier n'est pas affectée.

Paramètres fseek ()

  • stream: le flux de fichiers à modifier.
  • offset: le nombre de caractères à déplacer par rapport à l'origine.
  • origine: Position utilisée comme référence à ajouter au décalage. Il peut avoir les valeurs suivantes:
valeurs d'origine fseek ()
Valeur La description
SEEK_SET Début de dossier
SEEK_CUR Position actuelle du pointeur de fichier
SEEK_END Fin de fichier

fseek () Valeur de retour

  • En cas de succès, la fonction fseek () renvoie zéro, sinon nul.

Exemple: Comment fonctionne la fonction fseek ()?

 #include int main() ( FILE* fp = fopen("example.txt","w+"); char ch; fputs("Erica 25 Berlin", fp); rewind(fp); printf("Name: "); while((ch=fgetc(fp))!=' ') putchar(ch); putchar(''); printf("Age: "); fseek(fp,10,SEEK_SET); while((ch=fgetc(fp))!=' ') putchar(ch); putchar(''); printf("City: "); fseek(fp,15,SEEK_SET); while((ch=fgetc(fp))!=EOF) putchar(ch); putchar(''); fclose(fp); return 0; )

Lorsque vous exécutez le programme, la sortie sera:

 Nom: Erica Age: 25 Ville: Berlin

Articles intéressants...