begin process at 2012 02 08 21:03:24
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Général

 > 

Problème écriture fichier


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème écriture fichier

mardi 20 mai 2008 à 18:04:51 | Problème écriture fichier

pitidragon

Bonjour à tous !

J'ai besoin d'aide pour finaliser un projet pour la fac. Je dois réaliser un démineur, et j'ai un petit soucis pour finir. Je dois gérer les meilleurs scores et donc en cas de meilleur score écrire ce score dans un fichier.
Mon fichier texte est très simple, au début les scores sont initialisés à 999, avec une ligne par niveau :

999
999
999
999

J'ai écrit une fonction pour se placer sur la ligne qui correspond au niveau de jeu, et écrire le score à cette ligne :

int ecrire_score(int choix, double score)
{
    FILE *f;
    int i=1;
    char temp;

    f=fopen("Score","r+t");
    if(f==NULL)
    {
        perror("Erreur d'ouverture du fichier ");
    }

    while(i<=4)
    {
        if(i==choix)
        {
            fprintf(f,"%lf\n",score);
            return(0);
        }
        else
        {
            fgets(&temp,MAX_LIGNE,f);
            i++;
        }
    }
    return(0);   
}

Problème : j'ai une erreur de segmentation, et le soucis vient du fgets, mais je ne sais pas comment corriger !

Si quelqu'un peut m'aider je le remercie d'avance !
mardi 20 mai 2008 à 18:33:56 | Re : Problème écriture fichier

SAKingdom

Membre Club
Réponse acceptée !
fgets prend un pointeur char comme premier paramètre. Cependant, tu passes un char.

char temp[MAX_LIGNE]; // SI MAX_LIGNE N'EST PAS TROP GROS
...
fgets(temp, MAX_LIGNE, f);

C++ (@++)

mardi 20 mai 2008 à 18:38:58 | Re : Problème écriture fichier

pitidragon

Pourtant j'ai fait la même chose dans une autre fonction et ça marche :

double lire_score(int choix)
{
    FILE *f;
    int i=1;
    double meilleur_score;
    char temp;
   
    f=fopen("Score","rt");
    if(f==NULL)
    {
        perror("Erreur d'ouverture du fichier ");
    }
   
    while(i<=4)
    {
        if(i==choix)
        {
            fscanf(f,"%lf",&meilleur_score);
            fclose(f);
            return(meilleur_score);
        }
        else
        {
            fgets(&temp,MAX_LIGNE,f);
            i++;
        }
    }
}


Bizarre non ?
mardi 20 mai 2008 à 18:49:00 | Re : Problème écriture fichier

SAKingdom

Membre Club
Ce n'est pas parce que le code compile qu'il est correct.
Cette section ne fonctionnera pas d'avantage. Si l'erreur n'est pas située là lors du plantage, c'est simplement qu'il n'a pas exécuté ce bout de code (il a planté avant).

C++ (@++)

mardi 20 mai 2008 à 18:53:17 | Re : Problème écriture fichier

SAKingdom

Membre Club
Ou alors i == choix lors de l'exécution ou il y a eu une erreur lors de l'ouverture du fichier. Menfin bref, le programme ne s'est pas rendu jusque là.

C++ (@++)

mardi 20 mai 2008 à 18:55:16 | Re : Problème écriture fichier

pitidragon

Ok merci, je ferai les modifications que tu m'as conseillé :)
mardi 20 mai 2008 à 19:02:40 | Re : Problème écriture fichier

jfrancois

Bonjour,

C'est peut-être une bêtise mais est-ce que celà ne serait pas plutôt dû à l'alignement en mémoire sur des blocs de 4 octets ?

Le caractère temp occupe bien un octet mais les 3 qui suivent sont bloqués par l'alignement des données sur 4 octets, donc la lecture déborde dessus sans rien casser puisqu'il n'y a, justement, que 4 caractères à lire (3 caractères du nombre + fin de ligne) !

Jean-François

mardi 20 mai 2008 à 19:06:51 | Re : Problème écriture fichier

SAKingdom

Membre Club
Je ne pense pas. J'ai fais les tests et, sous linux du moins, l'erreur de segmentation est bien détectée peut-importe qu'il y ait une variable qui suit ou non.

C++ (@++)

mardi 20 mai 2008 à 19:15:19 | Re : Problème écriture fichier

pitidragon

Si ça peut être utilise voici un lien pour télécharger l'intégralité de mon démineur. Pour info je travaille sous linux.

[ Lien ]
mercredi 21 mai 2008 à 15:38:13 | Re : Problème écriture fichier

pitidragon

SAKingdom je te remercie le problème venait bien de là !


Cette discussion est classée dans : fichier, problème, ligne, int, score


Répondre à ce message

Sujets en rapport avec ce message

Pb de gestion de fichier avec fstream [ par Bub325 ] Salut,J'ai deux problème distinct avec fstream, Le premier est que lorsque j'arrive à la fin d'un fichier, je ne peut plus revenir plus haut dans ce d Comment se positionner sur une ligne dans un ifstream? [ par mcrogiez ] Bonjour à tous,Mon problème est très simple, cependant, je n'arrive pas à le résoudre.En C++, j'utilise des objets de type ofstream et ifstream afin d lecture ordonnée dans fichier [ par UnderFlow ] Bonjour à tous,(encore une question dsl),j'aimerais savoir s'il existe en C ou C++ (pas de C#), une fonction qui permette de :lire dans le fichier "mo problème d'ouverture de fichier [ par marc_dd ] Bonjour voila j'ai codé un peti programme avec sauvetage et ouverture de fichier, quand je sauve pas de problème il créer le fichier ou le mets à jour Lire une ligne au hazard dans un fichier [ par sebastienmz ] Bonjour je suis confronter a un problème : j'aimerais lire une ligne au hazard dans un fichier et je sais pas trop comment faire , pourriez-vous m'aid Problème avec type de données et opérateur >> lors de lecture de fichier [ par bny ] Bonjour, j'essaie de décoder un fichier de configuration(txt) j'ai certain problèmes avec les types de données et l'opérateur >> (flux de données).  J C++ et fichier texte [ par olobo ] bonjour ! j'ai besoin d'aide pour 2 problème svp [^^happy13] [u]Problème 1 [/u] Voila j'aimerais pouvoir lire les ligne d'un fichier texte qui est problème listBox [ par ezzineahmed ] salut, j'utilise visuel 2008, j'ai fait un bouton qui fait le calcul et il enregistre le resultat dans un fichier, je veut ouvrir et ecrire le contenu probleme de zero binaire dans un enregistrement [ par thefifou ] Bonjour a tous, Je vous ecris afin de trouver un peu d'aide. Mon problème est le suivant: Je dois lire, ligne par ligne, un fichier en entrée, manipul


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,524 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales