Bonjour, cliquez-ici pour vous inscrire et participer au forum.
  • Login:



+ Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

Eviter les répétitions de : fopen

  1. AmigaOS

    Date d'inscription
    mars 2008
    Localisation
    Hérault
    Messages
    501

    Eviter les répétitions de : fopen

    Bonjour

    Je cherche à créé un programme en C qui me créé 1000 fichiers .BMP.
    Pour l’instant je sais faire :
    Code:
    fichier = fopen ("image001.bmp", "ab") ;  …….  fclose (fichier) ;
    fichier = fopen ("image002.bmp", "ab") ;  …….  fclose (fichier) ;
    fichier = fopen ("image003.bmp", "ab") ;  …….  fclose (fichier) ;
    fichier = fopen ("image004.bmp", "ab") ;  …….  fclose (fichier) ;
    fichier = fopen ("image005.bmp", "ab") ;  …….  fclose (fichier) ;
    …….
    …….
    Mais je ne vais pas non plus l’écrire 1000 fois.
    Je demande donc comment le faire plus simplement ?

    Merci
    Dernière modification par AmigaOS ; 04/08/2012 à 23h54.
     


    • Publicité



  2. polo974

    Date d'inscription
    février 2007
    Messages
    6 079

    Re : Eviter les répétitions de : fopen

    comme ça ressemble à du C:

    emballer tout ça dans un :
    int i;
    for(i = 0; i<1000; i++) /* de 0 à 999 */
    {
    ....
    }

    ensuite il y a sprintf qui permet d'écrire dans une chaine, donc
    char nomfich[64];
    sprintf(nomfich,"image%03d.bmp ",i)

    et utiliser la variable nomfich dans le fopen:
    f=fopen(nomfich,...)

    comme ce sont les structure de contrôle et les fonctions de base, je te conseille de compulser la doc et les tutoriaux dispos sur le web ou le papier (si, si, ça existe encore...).
    Le mieux est l'ennemi du bien, et c'est bien mieux comme ça...
     

  3. Zartan

    Date d'inscription
    mars 2010
    Messages
    359

    Re : Eviter les répétitions de : fopen

    Ce n'était pas la question mais "ab" ça me parait bizarre pour écrire un fichier bmp, parce que si le fichier existe déjà, au lieu de l'effacer ça va ajouter des données à la fin.
     

  4. AmigaOS

    Date d'inscription
    mars 2008
    Localisation
    Hérault
    Messages
    501

    Re : Eviter les répétitions de : fopen

    Enfaite ce qui me pose problème est juste l'ouverture et la fermeture avec fopen et fclose. Les fichiers ne sont pas ouvert en même temps, donc pour l’écriture pas de problème.
    Pour "ab" c'est ok. Les fichiers n'existent pas au début du programme, mais avec "ab" ils sont créé. Et puis j’écris les octets à la ceuleuleu à la fin du fichier.


    J'aimerai faire un espèce de ça, qui ne fonctionne bien-sur pas :

    FILE* fichier = NULL ; // Une seul fois


    for (i=0 ; i<1000 ; i++)
    {
    fichier = fopen ("image[i].bmp", "ab") ;

    // Écriture
    // Écriture
    // Écriture

    fclose (fichier) ;
    }

    (J'utilise pas la balise CODE parce-que c'est tout petit et on voit rien.)
     

  5. PA5CAL

    Date d'inscription
    décembre 2005
    Localisation
    Paris
    Âge
    47
    Messages
    9 480

    Re : Eviter les répétitions de : fopen

    Bonjour

    polo974 a déjà donné la réponse: à chaque itération, utilise sprintf(...) pour créer le nom de fichier avant de l'utiliser dans fopen(...) .


    Quant à la lisibité du code, elle est normalement bien meilleure avec les balises [CODE], qui conservent l'indentation et utilisent un police adaptée. Pense d'abord à ceux qui te lisent : si ça apparaît tout petit chez toi, ce n'est généralement pas le cas chez les autres (chez moi notamment). Par ailleurs ton navigateur n'aura certainement aucun mal à grossir le texte.
    Dernière modification par PA5CAL ; 05/08/2012 à 15h48.
     


    • Publicité



  6. Jack

    Date d'inscription
    avril 2003
    Localisation
    Metz
    Messages
    12 153

    Re : Eviter les répétitions de : fopen

    Pour "ab" c'est ok. Les fichiers n'existent pas au début du programme, mais avec "ab" ils sont créé.
    Ça nuit clairement à la lisibilité du code. Celui qui passe derrière un code comme celui-là va immanquablement se poser des questions inutiles. Si le nouveau fichier doit être crée à chaque fois, il faut utiliser wb et pas ab.

    A+
    Dernière modification par Jack ; 05/08/2012 à 15h58.
     

  7. AmigaOS

    Date d'inscription
    mars 2008
    Localisation
    Hérault
    Messages
    501

    Re : Eviter les répétitions de : fopen

    A oui, excusez moi, j'avais pas compris le sens du code.
    Ça fonctionne maintenant :

    Code:
    char Nomfich[7] ;
    
    for (NBimgs=0 ; NBimgs<NBimax ; NBimgs++)
    {
              sprintf (Nomfich, "Img%d.bmp", NBimgs+1);
              fichier = fopen (Nfich,"ab") ;
              ......................
              fclose (fichier) ;
    }
    Merci
     

  8. PA5CAL

    Date d'inscription
    décembre 2005
    Localisation
    Paris
    Âge
    47
    Messages
    9 480

    Re : Eviter les répétitions de : fopen

    Deux erreurs :
    Code:
    char Nomfich[7] ;   <------
    
    for (NBimgs=0 ; NBimgs<NBimax ; NBimgs++)
    {
              sprintf (Nomfich, "Img%d.bmp", NBimgs+1);
              fichier = fopen (Nfich,"ab") ;   <------
              ......................
              fclose (fichier) ;
    - augmenter la taille de Nomfich afin de réserver l'espace nécessaire au nom de fichier le plus long, en incluant son zéro terminal. Par exemple, pour NBimax≤999 (numéro de fichier de un à trois chiffres), il faut prévoir au moins Nomfich[12].

    - remplacer Nfich par Nomfich.
    Dernière modification par PA5CAL ; 09/08/2012 à 00h57.
     


    • Publicité




Poursuivez votre recherche :




Sur le même thème :




 

Discussions similaires

  1. probleme avec fopen()
    Par ced99 dans le forum Programmation et langages, Algorithmique
    Réponses: 11
    Dernier message: 23/01/2011, 19h04
  2. QR - Site Internet : éviter les spam pour les adresses e-mail
    Par RSSBot dans le forum Commentez les actus, dossiers et définitions
    Réponses: 2
    Dernier message: 03/11/2010, 20h52
  3. Actu - Une biopuce pour éviter les tests sur les animaux
    Par RSSBot dans le forum Commentez les actus, dossiers et définitions
    Réponses: 6
    Dernier message: 26/09/2008, 11h31
  4. p-listes sans répétitions.
    Par neokiller007 dans le forum Mathématiques du collège et du lycée
    Réponses: 5
    Dernier message: 06/05/2008, 09h18
  5. Actu - Des robots pour éviter les tests sur les animaux
    Par RSSBot dans le forum Commentez les actus, dossiers et définitions
    Réponses: 2
    Dernier message: 18/02/2008, 22h14


Les tags pour cette discussion