Fermeture de fichier en C++

Salut la compagnie, je suis sur un programme en C++ sous visual et j'ai un problème:
fclose(fic);
à l'éxecution j'ai l'erreur: User break point called from code at 0x7848018c
je vous remercie de m'aider
à +

22 réponses

  1. Contributeur
    break point ? c est sous debugger les break point...
    c'est posible de voir ton code?
    0
    1. merci de ton aide, voici mon code:

      dans le main:
      /*fermeture des fichiers */
      if (ferme_fic(fic_mid,fic_mif))
      exit(-1);

      int ferme_fic(FILE* fic_mid, FILE* fic_mif)
      {
      if (fclose(fic_mid))
      {
      printf("impossible de fermer le fichier .MID");
      getchar();
      return(-1);
      }
      if (fclose(fic_mif))
      {
      printf("impossible de fermer le fichier .MIF");
      getchar();
      return(-1);
      }
      return(0);
      }
      0
      1. Contributeur
        Bon a priori ya pas de prob pour moi ca marche,
        le mieux c est de passer ton code au debugger et m'envoyer les lignes de code ou ca merde...
        verifie aussi les pointeurs que tu file a ta fonction ..si ils sont nuls c est normal que ca merde..
        si ils ont était modifié en cours de route c est normal aussi

        #include <stdio.h> 
        #include <stdlib.h>
        
        //tester compilé debuggé ecexcuté ca marche sans probleme
        //cela vient d'ailleur
        //peut etre de l'ouverture des fichier..si ils ne sont pas ouverts
        //ba ca merde forcement...
        
        
        //ta fonction de fermeture
        //juste un truc il vo mieux faire une fonction qui fermera un fichier a la fois
        //dans le cas ou sa merde sur l un des deux ca foutera pas tout en l air...
        int ferme_fic(FILE* fic_mid, FILE* fic_mif)
        { 
        	if (fclose(fic_mid)) 
        	{ 
        		printf("impossible de fermer le fichier .MID"); 
        		//pourquoi les gatchar??
        		getchar(); 
        		return(-1); 
        	} 
        	if (fclose(fic_mif)) 
        	{ 
        		printf("impossible de fermer le fichier .MIF"); 
        		//pourquoi les gatchar??
        		getchar(); 
        		return(-1); 
        	} 
        	return(0); 
        }
        
        
        //le main que j ai fait pour test
        void main () 
        { 
        		FILE* fic1;
        		FILE* fic2;
        		
        		//ouverture des fichiers
        		fic1=fopen("h:\\test1.txt","r");
        		fic2=fopen("h:\\test2.txt","r");
        		
        		
        		//ton code
        		if (ferme_fic(fic1,fic2)) 
        			exit(-1); 
        		else exit(0);
        
        }
        
        
         
        
        
        
        0
        1. merci des conseils
          En fait je viens de me rendre compte que j'ai l'erreur aussi pour tous les free que j'fai

          les getchar() c parce que je fait exit et je vois pas mon printf sinon (c'est juste pour le degugage
          0
          1. Contributeur
            lol..
            pour info le debuggage ca se fait pas en faisant des printf ^^
            t'utilise quoi comme plateforme de dev?
            0
            1. je debug avec f10 f11 aussi sinon je travail avec visual
              0
              1. Contributeur
                c'est une rolls ca...j ai le meme (enfin por le c/c++ en ce moment j fait du java alors c est plus eclipse...)
                0
                1. ca bug de tant en tant surtout quand tu fait des mfc

                  tu n'aurais pas une idée pour un pb que j'ai eu hier cf syntax error:
                  0
                  1. Contributeur
                    j retrouve pas le post fait un c/c ici avec le code qui merde j jetrai un oeuil dessus cet apre m si tu le post avant 18h sinon dem1 ;-)
                    0
                    1. C_foret::C_foret(C_foret *foret)
                      {
                      strcpy(nom, foret->nom);
                      zone=foret->zone;
                      }

                      syntax error '->'
                      0
                      1. Contributeur
                        sur la 1 ere ou la seconde ligne ou sur les 2?
                        c'est ton createur ca ..c'est possible d'avoir les declaration de la classe?
                        0
                        1. j'ai l'erreur au deux flèches et j'ai aussi l'erreur:
                          syntax error '.' pour les deux dans la surcharge de l'operateur egal
                          C_foret C_foret::operator=(C_foret foret)
                          {
                          zone=foret.zone;
                          strcpy(nom,foret.nom);
                          return(this);
                          }

                          voici ma classe:
                          class C_foret
                          {
                          public:
                          /* ATRIBUTS */
                          C_zone zone;
                          char nom[10];

                          /* METHODES */
                          C_foret(C_foret *foret);
                          C_foret(int taille_foret);
                          ~C_foret();
                          affiche_foret();
                          C_foret operator=(C_foret foret);
                          };
                          0
                          1. Contributeur
                            je vais etre chiant mais pour tester je pourrai avoir la classe c_zone?
                            0
                            1. je peux t'envoyer un mail avec tout mon code ?par ce que se serait un peu long par le forum
                              0
                              1. Contributeur
                                oui pas de probleme..mon @ doit etre visible dans mon profil..
                                0
                                1. y a marqué ke t'a pas de profil :(
                                  0
                                  1. Contributeur
                                    arf lol
                                    effectivement yavai rien
                                    ...
                                    normalement c est bon maintenant
                                    0
                                    1. voilà c fait merci encor de regarder
                                      0
                                      1. Eh canard si tu trouve pas c normal ca fait deux jours que je cherche sans resultats
                                        0
                                        1. J'AI TROUVE:
                                          c'est dans foret.h:
                                          il faut
                                          #ifndef foret_h
                                          #define foret_h
                                          #endif  foret_h

                                          et pas:
                                          #ifndef foret
                                          #define foret
                                          #endif  foret
                                          0
                                          • 1
                                          • 2