IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

fscanf et fichier en C


Sujet :

C

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 18
    Points : 7
    Points
    7
    Par défaut fscanf et fichier en C
    bonjour a tous,

    tout d'abord je me présente, je suis un gentil personnage qui débute en C et qui aime bien tout le monde.

    maintenant que les presentation sont faite, passons au vif du sujet, voila j'ai besoins de votre aide a propos de la fonction Fscanf.

    pour vous expliqué rapidement le probleme, lorsque j'emploie la fonction fscanf comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    	scoring=fopen("scoring.txt","r+");
    	if(scoring!=NULL)
    	{
    		fseek(scoring,0,SEEK_END);
    		if(fprintf(scoring,"%s %f %d\n",joueur.nom,joueur.moyenne,joueur.partie)!=EOF) printf("fprintf=OK\n");
    		else printf("fprintf=NOK\n");
     
    		if(fscanf(scoring,"%s %f %d",&x_joueur.nom,&x_joueur.moyenne,&x_joueur.partie)!=EOF)
    		{
    			printf("fscanf=OK\n");
    			printf("%s %f %d\n",x_joueur.nom,x_joueur.moyenne,x_joueur.partie);
    		}
    		else printf("fscanf=NOK\n");
    		rewind(scoring);
    		j=fgetc(scoring);
    		while(j!=EOF)
    		{
    			l++;
    			printf("%c",j);
    			j=fgetc(scoring);
    		};
    		printf("nombre total de caractere dans le fichier = %d\n",l);
    		fclose(scoring);
    	}
    	else exit(0);
    c'est à dire comme, vous avez pu le remarqué, sans faire de rewind() avant l'appel de fonction

    dans ce cas la fonction fscanf "ECRIT" a la fin de mon fichier
    (pour info je suis sous windows et j'utilise visual studio express)

    j'ai tester le meme code avec un rewind avant et tout ce passe bien, j'aimerais savoir a quoi cela est du ?

    pour info voici la sortie de mon fichier après le fsancf en question
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    FILE */out
     
    gentil-personnage 1.000000 1
    ð-º
    ð-
    les 2 derniere ligne ne devrait normalement pas apparaitre ...

    merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Lorsqu'un fichier est ouvert en mode "+", certaines précautions doivent être prises lorsqu'on passe de la lecture à l'écriture et de l'écriture à la lecture :

    Si on est en lecture, avant d'écrire dans le fichier, il faut appeler une fonction de positionnement du fichier (rewind, fseek ou fsetpos).
    Si on est en écriture, avant de lire dans le fichier, il faut appeler une fonction de positionnement du fichier (rewind, fseek ou fsetpos) ou faire un fflush du fichier.

    Si les écritures doivent se faire en fin de fichier, le mode "a+" est indiqué.

    A noter, que pour un fichier texte, fseek() doit prendre comme origine SEEK_SET et pour offset 0 ou une valeur obtenue par ftell().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ....
    j=fgetc(scoring);
    while(j!=EOF)....
    La variable j doit être du type int .
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  3. #3
    Futur Membre du Club
    Inscrit en
    Juin 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    ok, merci.
    donc comme préciser dans le post, effectivement le rewind resou mon probleme. de ce point de vue la sa fonctionne.
    meme si c'est vrai que j'aurais bien aimé comprendre pourquoi fscanf ecrit dans le fichier, mais c'est vrai que quelque part c'est peut etre un peut superflue.


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. fscanf et fichier de config
    Par roms503 dans le forum Débuter
    Réponses: 5
    Dernier message: 07/12/2010, 03h14
  2. Fscanf lecteur fichier
    Par marty499 dans le forum C
    Réponses: 4
    Dernier message: 15/12/2008, 18h46
  3. Réponses: 2
    Dernier message: 26/04/2007, 20h27
  4. fscanf se perd dans mon fichier
    Par oliv928 dans le forum C
    Réponses: 3
    Dernier message: 02/01/2007, 12h51
  5. Pb fprintf, fscanf pour un fichier .txt
    Par GeekMéPaTrop dans le forum C
    Réponses: 8
    Dernier message: 23/09/2005, 18h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo