begin process at 2012 02 10 21:16:47
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Linux

 > 

Fichier & Disque

 > 

probleme dans une ecriture de fichier


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

probleme dans une ecriture de fichier

mercredi 2 août 2006 à 23:45:52 | probleme dans une ecriture de fichier

hisoka56

bon salut a tous, j'ai un petit probleme d'ecriture dans un fichier dans uen fonction qui permet de sauvegarder un niveau

voila le fichier de niveaux est de cette forme:
le tag [level] sert de separateur de niveau et les informations apres concerne ce dont j'ai besoin pour jouer.
[level]
1
test.mp3
10101010101010101010
01010101010101010101
11111111111111111111
00010001000100010001
10010010010010010010
10001110111000100011
00000000000000000000
00000000000000000000
00000000000000000000
00000000000000000000
[level]
2
test.mp3
00000000000000000000
01010101010101010101
11111111111111111111
00010001000100010001
10010010010010010010
10001110111000100011
00000000000000000000
00000000000000000000
00000000000000000000
00000000000000000000


et ma fonction pour sauvegarder le niveau a en faite 2 fonction, si le niveau n'existe pas, elle l'ecrit a la fin du fichier, cette fonction marche bien mais l'autre partie (si le niveau existe, elle devrait le remplacer par celui en cours et ca ne marche pas)
pourtant en principe, mon pointeur est bien positionné et devrait ecrire par dessus le texte deja existant.
Code : C++

int Level::sauvegarder(int level)
{

        FILE* fichier=NULL;
        char chaineCourante[LIGNE_MAX]="";
        int lvl=-1;
        int ligne=0;
        char *trouve;
        int bon=0;

        fichier = fopen("niveaux.bbg", "r+");
        if(fichier == NULL)return0;

        while(fgets(chaineCourante, LIGNE_MAX, fichier) != NULL && !bon)
        {
                ligne++;
                // On cherche l'occurence du seperateur de level
                trouve = strstr(chaineCourante, "[level]");
                if(trouve != NULL)//on a trouve un level
                {
                        lvl= atoi(fgets(chaineCourante, LIGNE_MAX, fichier));
                        if(lvl == level)//on a trouve le bon level
                                bon=1;
                }
        }
        //ecriture du level...
        if(!bon)//si on n'a pas trouvé le level
                fprintf(fichier, "[level]\n%d\n",level);
        fprintf(fichier, "%s", musique);
        for(int i=0; i<10; i++)
        {
                for(int j=0; j<20; j++)
                        fprintf(fichier, "%d",brick[j][i]);
                fprintf(fichier, "\n");
        }
        fclose(fichier);
        return1;
}


si je fais un niveau.sauvegarder(4); le programme va correctement ecrire le niveau 4
mais si je fais un niveau.sauvegarder(2), il ne remplace pas le niveau2 actuel par celui que je veux.

ps: il manquerait une fonction code dans ce forum (ou alors j'ai pas bien regardé)
jeudi 3 août 2006 à 13:23:25 | Re : probleme dans une ecriture de fichier

bilaloch

Salut,

Que se passe t'il lorsqu'il existe deja ? Il l'enregistre a la fin ?

BILALoch

jeudi 3 août 2006 à 15:18:51 | Re : probleme dans une ecriture de fichier

gerald3d

A la fin tu testes la valeur de "bon". Le problème est que si "bon" est vrai, tu écris quand même la musique et les données à la suite du fichier. Il faudrait je pense récupérer la position où tu désires écraser les données avec ftell(); par exemple pour ensuite te placer au bon endroit avec fseek(); pour écrire tes données.
jeudi 3 août 2006 à 15:18:53 | Re : probleme dans une ecriture de fichier

gerald3d

A la fin tu testes la valeur de "bon". Le problème est que si "bon" est vrai, tu écris quand même la musique et les données à la suite du fichier. Il faudrait je pense récupérer la position où tu désires écraser les données avec ftell(); par exemple pour ensuite te placer au bon endroit avec fseek(); pour écrire tes données.
jeudi 3 août 2006 à 17:22:22 | Re : probleme dans une ecriture de fichier

hisoka56

Réponse acceptée !
bon finalement j'ai reussi a corriger ca en passant par une methode differente
si le niveau existe deja, je passe par un fichier temporaire dans lequel je copi tout avant le dit level, le level qui je veu sauvegarder et la fin du fichier, et meme si c'est pas comme je voulais le faire au debut ca marche et comme j'aurai je pense pas plus d'une 20aine de level, ca prend aps trop de temps
en tout cas merci pour vos reponse.


sinon c'etait fait expres pour le bon, en effet si bon=1, alors le marqueur se trouvait a la bonne position et il me restait plus qu'a ecrire le level (meme si maintenant je ne fais plus comme ca)


Cette discussion est classée dans : fichier, fonction, int, niveau, level


Répondre à ce message

Sujets en rapport avec ce message

REcuperer des donnée d'un fichier binaire vers une tableau de hachage [ par whiteknight ] Slt j'ai des problemes avec ma fonction load qui me permet de recuperer les données d'un fichier binaire et de les transférer vers un tableau de hacha Probleme de creation de fichier avec DevC++ BloodShed 4.9.8.0 [ par Anysse ] Bonjour, donc moi j ai un petit probleme avec la creation d un fichier en utilisant des fonctions de haut niveau : fopen et fclose, lors de la compila Appel d'une fonction contenue dans une dll [ par ybuchheit ] Bonjour, je souhaiterais appeler une fonction contenue dans une dll. Je n'ai pas le source de cette dll, le seul fichier dont je dispose est le .dll Aide sur la fonction setsockopt(....) [ par KissyFroth ] Bonjour, je voudrai savoir ce que permet exactement la fonction setsockopt(SOCKET s,int level, ...) et si elle influe sur le mode de connexion utilisé fonction avec un type file* [ par vercd7am ] Bonjour, j'ai ecrit quelques lignes de code pour pouvoir lire un fichier txt. [code=cpp]int main() { int c; FILE *fichier = NULL; fichi les fichier en C [ par abdobergach ] bonjour j'ai un erreur qui je connais pas pouquoi qlq'un m'aider svp,voila l'eerreur: error C2664: 'CreateFileW'*: impossible de convertir le paramètr calculs tableau [ par 3463 ] Salut à tous !! J'ai besoin de votre aide [^^happy13] Voici mon programme : # include # include # include # include # include # include # incl Publipostage C++ [ par olfleouf ] Bonjour voila nous avons un projet de publipostage a réaliser en C++. Nous avons une lettre comme modèle qui est composée de plusieurs balises (ex #N Problème avec GetOpenFileName enfin élucidé [ par ArthurAuguste ] Je viens enfin d'élucider ce problème qui au vu des messages de ce site a beaucoup été lu, mais sur lequel je n'ai pas beaucoup eu de réponse. Voici c Listage des fichiers d'une directory [ par ArthurAuguste ] Bonjour, Question probablement très simple pour qui l'a déjà fait. J'essaie de savoir quels sont tous les fichiers qui se trouvent sous une directory


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 0,406 sec (3)

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