fsetpos
|
Défini dans l'en-tête
<stdio.h>
|
||
Définit l'indicateur de position du fichier et l'état d'analyse multioctet (le cas échéant) pour le flux de fichier stream selon la valeur pointée par pos .
En plus d'établir un nouvel état d'analyse et une nouvelle position, un appel à cette fonction annule les effets de ungetc et efface l'état de fin de fichier, s'il est défini.
Si une erreur de lecture ou d'écriture se produit, l'indicateur d'erreur ( ferror ) du flux est défini.
Table des matières |
Paramètres
| stream | - | flux de fichier à modifier |
| pos | - | pointeur vers un fpos_t objet à utiliser comme nouvelle valeur de l'indicateur de position de fichier |
Valeur de retour
0 en cas de succès, valeur non nulle sinon.
Notes
Après s'être positionné à une position non finale dans un flux large, le prochain appel à toute fonction de sortie peut rendre le reste du fichier indéfini, par exemple en produisant une séquence multioctet de longueur différente.
Exemple
fsetpos
avec vérification d'erreur
#include <stdio.h> #include <stdlib.h> int main(void) { // Préparer un tableau de valeurs FP (virgule flottante). #define SIZE 5 double A[SIZE] = {1.0, 2.0, 3.0, 4.0, 5.0}; // Écrire le tableau dans un fichier. FILE * fp = fopen("test.bin", "wb"); fwrite(A,sizeof(double),SIZE,fp); fclose (fp); // Lire les valeurs FP dans le tableau B. double B[SIZE]; fp = fopen("test.bin","rb"); fpos_t pos; if (fgetpos(fp, &pos)) // position actuelle : début du fichier { perror("fgetpos()"); fprintf(stderr, "fgetpos() a échoué dans le fichier %s à la ligne # %d\n", __FILE__, __LINE__ - 3); exit(EXIT_FAILURE); } int ret_code = fread(B,sizeof(double),1,fp); // lire une valeur FP // position actuelle : après lecture d'une valeur v-f printf("%.1f; compteur de lecture = %d\n", B[0], ret_code); // afficher une valeur FP et ret_code if (fsetpos(fp, &pos)) // réinitialiser la position actuelle au début du fichier { if (ferror(fp)) { perror("fsetpos()"); fprintf(stderr, "fsetpos() a échoué dans le fichier %s à la ligne # %d\n", __FILE__, __LINE__ - 5); exit(EXIT_FAILURE); } } ret_code = fread(B, sizeof(double), 1, fp); // relire la première valeur FP printf("%.1f; compteur de lecture = %d\n", B[0], ret_code); // afficher une valeur FP et ret_code fclose(fp); return EXIT_SUCCESS; }
Sortie possible :
1.0; read count = 1 1.0; read count = 1
Références
- Norme C23 (ISO/IEC 9899:2024) :
-
- 7.21.9.3 La fonction fsetpos (p: TBD)
- Norme C17 (ISO/CEI 9899:2018) :
-
- 7.21.9.3 La fonction fsetpos (p: TBD)
- Norme C11 (ISO/CEI 9899:2011) :
-
- 7.21.9.3 La fonction fsetpos (p: 337)
- Norme C99 (ISO/IEC 9899:1999) :
-
- 7.19.9.3 La fonction fsetpos (p: 303)
- Norme C89/C90 (ISO/CEI 9899:1990) :
-
- 4.9.9.3 La fonction fsetpos
Voir aussi
|
obtient l'indicateur de position du fichier
(fonction) |
|
|
retourne l'indicateur de position actuel du fichier
(fonction) |
|
|
déplace l'indicateur de position du fichier vers un emplacement spécifique
(fonction) |
|
|
documentation C++
pour
fsetpos
|
|