-
04/08/2012 - 23h53 AmigaOS
Eviter les répétitions de : fopen
Dernière modification par AmigaOS ; 04/08/2012 à 23h54.
-
05/08/2012 - 06h51 polo974
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... -
05/08/2012 - 07h24 Zartan
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.
-
05/08/2012 - 15h09 AmigaOS
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.) -
05/08/2012 - 15h46 PA5CAL
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.
-
05/08/2012 - 15h55 Jack
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.
-
09/08/2012 - 00h09 AmigaOS
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 -
09/08/2012 - 00h54 PA5CAL
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.
| | |