Fonction de lecture formatée fscanf: fichier texte

Ecriture formatée dans un fichier texte: fscanf

                                                       int fscanf(FILE* f, char* format, &arg1,&arg2,...);

Fait la même chose qu'un scanf mais lit dans le fichier f plutôt qu'à l'écran. fscanf retourne le nombre de variables lues ou 0 en cas d'erreur ou EOF si la fin de fichier a été atteinte.
Le format de lecture doit être identique à celui utilisé pour l'écriture (fprintf). Par exemple, la lecture d'un point dans le fichier sauverPoints sera: 
fscanf(f, "(%d,%d)\n", &p.x,&p.y);

#include<stdio.h>
typedef struct {
                      int x;
                      int y;
                     } point;
int main(void)
{
FILE* f;
point p;
int fin;
f = fopen("sauverPoints", "rt");
if (f = = NULL)
    printf ("Erreur ...");
else
   {
     
fin = fscanf(f, "(%d,%d)\n", &p.x,&p.y);
               /* lecture d'un point dans le fichier */

      while (fin != EOF)
            {
              printf("Voici le point (%d,%d)\n",p.x,p.y);
              fin = fscanf(f,"(%d,%d)\n", &p.x,&p.y);
                     }
    }
fclose(f);  
/* ferme le fichier */
}
REMARQUES

  • Le test de fin de fichier est différent de celui utilisé pour fgets, il faut tester la valeur retournée a scanf et la comparer à EOF qui est une constante définie dans stdio.h



Contenu du fichier sauverPoints
(12,23)
(78,89)
EOF
suivant             plan