boucle pour ouvrir plusieurs fichiers en C

boucle pour ouvrir plusieurs fichiers en C - C - Programmation

Marsh Posté le 09-07-2010 à 12:10:40    

Bonjour à tous, j'ai un petit programme à faire en C dans lequel je dois ouvrir plusieurs fichiers (fichier1, fichier2, fichier3, …, fichier50) et j'aimerais faire une boucle for qui me les ouvrirait un par un, pour pouvoir les modifier. Mais je ne vois pas du tout comment faire cette boucle, donc si quelqu'un a une idée …
Merci d'avance pour vos réponses.

Reply

Marsh Posté le 09-07-2010 à 12:10:40   

Reply

Marsh Posté le 09-07-2010 à 13:35:03    

mamzelle_bulle a écrit :

Bonjour à tous, j'ai un petit programme à faire en C dans lequel je dois ouvrir plusieurs fichiers (fichier1, fichier2, fichier3, …, fichier50) et j'aimerais faire une boucle for qui me les ouvrirait un par un, pour pouvoir les modifier. Mais je ne vois pas du tout comment faire cette boucle, donc si quelqu'un a une idée …
Merci d'avance pour vos réponses.


 
 
Bonjour,
 
Il faudrait savoir comment tu connais les noms des fichiers, et quelles modifications tu compte faire (est-ce que c'est nécessaire d'avoir tous les fichiers ouvert en même temps ou est-ce que les ouvrir l'un a près l'autre suffit)


---------------
sheep++
Reply

Marsh Posté le 09-07-2010 à 13:44:14    

Les fichiers je les ai créé et non ce n'est pas nécessaire qu'ils soient tous ouvert en même temps, j'aimerai justement pouvoir les ouvrir les uns après les autres.
 
 

Reply

Marsh Posté le 09-07-2010 à 13:51:55    

Je n'arrive pas à savoir ce que tu veux faire exactement:
- Les fichiers, tu veux les modifier avec le code, ou les ouvrir avec un éditeur de texte et les modifier à la main?
- Comment le programme sait quels fichiers il doit ouvrir?
 
Quel est ton niveau en programmation?  :whistle:


---------------
sheep++
Reply

Marsh Posté le 09-07-2010 à 14:17:42    

Oui les fichiers je veux les modifier avec le code, mon code est déjà fait, il marche mais le problème c'est que je suis obligé de le faire fichier par fichier, et comme il y en a beaucoup, c'est un peu long, c'est pour ça que j'aimerai pouvoir les ouvrir un par un grâce à une boucle for.
Pour mon niveau de programmation, il est pas génial, mais j'ai les bases.

Reply

Marsh Posté le 09-07-2010 à 14:29:10    

voila mon programme :

Code :
  1. FILE *tmp1= NULL;
  2. tmp1 = fopen("fichier1","r" );
  3. if(tmp1 == NULL)
  4.         {
  5.                 printf("file opening error !\n" );
  6.                 return 1;
  7.         }
  8.  else
  9.         {
  10.  //je fais mes modifications dans mon fichier  
  11. }
  12. fclose(tmp1);

 
 
et je veux faire la exactement le même chose pour mon fichier2, fichier3 etc. Est ce que c'est possible de le faire avec une boucle for, ou est ce qu'il faut que je réecrive tout pour chaque fichier ?

Reply

Marsh Posté le 09-07-2010 à 14:30:01    

Bon si tu as programmé les modifications je vois mal pourquoi tu n'arrive pas a faire une boucle d'ouverture de fichier mais bon.

 

En supposant que tes fichiers s'appellent fichier1, fichier2, fichier3, …, fichier50 un truc comme ça devrait marcher:

Code :
  1. char filename[255];
  2. int filecount;
  3. FILE * f;
  4. for(filecount = 1; filecount <= 50; filecount++)
  5. {
  6.     sprintf("fichier%d", filename, filecount);
  7.     if((f = fopen(filename), "r+" ) == NULL) exit(0);
  8.     // Fait ici tes modification sur f
  9.     fclose(f);
  10. }


Message édité par h3bus le 09-07-2010 à 14:31:13

---------------
sheep++
Reply

Marsh Posté le 09-07-2010 à 14:55:27    

Merci, c'est à peu près ce que j'avais fait, mais j'ai toujours une erreur de segmentation. Moi non plus je ne vois pas pourquoi je n'y arrive pas ;)

Reply

Marsh Posté le 09-07-2010 à 14:57:07    

Ou ça le segfault?


---------------
sheep++
Reply

Marsh Posté le 09-07-2010 à 14:58:09    

aucune idée, c'est pas précisé à la compilation

Reply

Marsh Posté le 09-07-2010 à 14:58:09   

Reply

Marsh Posté le 09-07-2010 à 15:00:04    

Ah bah si c'est à la compilation ton segfault ça va être compliqué pour toi  :o


---------------
sheep++
Reply

Marsh Posté le 09-07-2010 à 15:01:47    

erreur de segmentation au niveau du sprintf

Reply

Marsh Posté le 09-07-2010 à 15:05:27    

Ah bah oui j'ai marqué de la m**de
 

Code :
  1. sprintf(filename, "fichier%d", filecount);


 
Je me demande même comment ça pouvait compiler.
Et aussi il faut absolument allouer filename par  

Code :
  1. char filename[255];


un

Code :
  1. char * filename;


ou

Code :
  1. char filename[];


a toutes les chance de générer un segfault...

Message cité 1 fois
Message édité par h3bus le 09-07-2010 à 15:05:52

---------------
sheep++
Reply

Marsh Posté le 09-07-2010 à 15:14:02    

c'est plus d'erreur de segmentation, ça devrait marcher maintenant. Merci beaucoup  :)

Reply

Marsh Posté le 11-07-2010 à 18:39:51    

h3bus a écrit :

Ah bah oui j'ai marqué de la m**de
 

Code :
  1. sprintf(filename, "fichier%d", filecount);


 
Je me demande même comment ça pouvait compiler.


Ben la signature de sprintf demande deux char * aux deux premiers paramètres donc ça compile très bien...


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed