Ouvrir plusieurs fichiers

Résolu
Med -  
 med -
Bonjour,

J'ai un devoir à faire de programmation c et je bloque sur un passage. En fait je dois ouvrir plusieurs fichiers intitulés g01.txt, g02.txt, g03.txt.... Je pense utiliser la commande sprintf dans une boucle mais je n'y arrive pas.

Merci d'avance,
Sarah

3 réponses

  1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Bonjour

    Il te faut un tableau de caractère : nomFichier.
    Ensuite : sprintf(nomFichier,"g%2d.txt",i); à mettre dans une boucle for.
    Cela te permettra d'avoir nomFichier qui vaut : g01.txt, g02.txt, etc.
    Il ne te reste plus qu'à faire fopen() pour ouvrir tous les fichiers.
    Il faudra également faire le même procéder pour fermer les fichiers avec fclose().
    Une autre possibilité est de passer par un tableau.
    Cdlt,
    1
  2. med
     
    Merci beaucoup pour cette aide précieuse. Concernant, la boucle pour ouvrir les fichiers ça a l'air de marcher. Mais ensuite pour le fopen, il me semble que le programme ne trouve pas les fichiers...

    J'ai fais comme ça :

    (c=1;c<=24;c++){
    sprintf(nom,"g0%d.txt",c);
    fp=fopen("nom","r");
    }
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Ben, dans ton fopen tu mets "nom" qui ne correspondant pas à la variable nom mais au fichier "nom". Utilise : fopen(nom,"r");
      0
  3. med
     
    Ensuite j'ai un warning à la ligne du scanf et je ne comprends pas non plus. cela doit être à cause du fp mais je ne vois pas..

    for(t=0;t<=505;t++){
    scanf(fp,"%c",&texte[t]);
    printf("%c",texte);
    }
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Attention, quand tu fais fp=fopen(...); tu perds les fichiers ouverts précédemment. Il faudrait plutôt faire un tableau : fp[0]=fopen(...), fp[1]=fopen(...); etc.

      scanf(fp,"%c",&texte[t]);
      Il faut regarder les man pour bien connaître les prototypes...
      Ce n'est pas scanf si tu utilises un fichier, mais fscanf().
      0
    2. med
       
      Merci beaucoup ! Mon programme fonctionne très bien, encore quelques détails à régler et ce sera parfait.
      Merci !
      0