programme qui traite tous les fichiers d'un repertoire

programme qui traite tous les fichiers d'un repertoire - C - Programmation

Marsh Posté le 03-02-2008 à 19:43:10    

Bonjour,
 
Je vous explique mon probléme. J'ai un programme en C qui récupére des données (il ouvre un fichier et met les données dans un autre fichier) , j'ai un répertoire contenant environ 1000 fichiers, et il faut que je les traite tous. J'aimerais avoir un programme (une sorte de boucle???) en C qui permette de traiter tous les fichiers du repertoire 1 par 1.
Pourriez vous m'aidez???
 
 :??:  
 
Merci d'avance    

Reply

Marsh Posté le 03-02-2008 à 19:43:10   

Reply

Marsh Posté le 03-02-2008 à 20:16:02    

Zieute du côté des fonctions opendir(), readdir(), etc.

Reply

Marsh Posté le 04-02-2008 à 16:42:16    

Bonjour tout le monde,
 
 
Je veux faire un programme qui liste tous les fichiers d'un repertoire et les ouvre tous un par un. Je vous montre le programme que j'ai fait:  
 
 
#include <sys/types.h>
#include <dirent.h>
int main(void)
{  
int n=0;
int nbMesures;
char ligne[512]; //Sert à récupérer la ligne de temps.
char point[512]; //Sert à récupérer le nombre de mesures d'un points.
char ligne2[512]; //Sert à récupérer la ligne d'atténuation.
char lignesuite[512];  
char recupligne[512];   //recuperer le nom du fichier
 
struct dirent *lecture;
   DIR *rep;
   rep = opendir("/home/essai" );
   while ((lecture = readdir(rep)))
   {
 n=n+1;
       if (n>2)
 {
 printf("FICHIER: %s\n", lecture->d_name);
 FILE* f = fopen(lecture->d_name,"r" ); //ici je veux ouvrir le fichier listé
 FILE* f2 = fopen("resultat.txt","w" );
 fscanf(f,"%s",& recupligne);    //ici je veux recupérer la 1ere ligne du fichier listé
 fprintf(f2,"%s", recupligne); //ici je veux écrire la ligne récupérer dans un fichier créé  
}
    }
closedir(rep);
   
   
 
   return 0;
}
 
j'arrive à lister les fichiers mais pas à l'ouvrir!!! pourriez vous m'aidez?
 
Merci d'avance

Reply

Marsh Posté le 04-02-2008 à 16:53:24    

Les sujets suivont ont étés fusionnés à ce sujet par Elmoricq

  • aide sur un porgramme en C qui doit ouvrir les fichiers d'un repertoir

Reply

Marsh Posté le 04-02-2008 à 16:59:49    

Bah, problème archi-classique : le champ "lecture->d_name" ne contient pas le répertoire.
 
Edit: arf et évite à tout prix fscanf("%s" ) pour récupérer une ligne dans un fichier. fgets() est beaucoup moins casse gueule.


Message édité par tpierron le 04-02-2008 à 17:00:56
Reply

Marsh Posté le 27-04-2008 à 20:37:16    

bonjour,
Je suis sous windows avec VS 2005. Je suis débutant.
Je souhaite utiliser les fonctions opendir/readdir ... pour ouvrir et traiter uniquement les fichiers de type .spd. Ensuite je veux faire un .exe qui cherche et traite les fichiers qui sont dans le repertoire courant. Mais voila je comprends pas bien comment utiliser opendir().
 
Merci pour votre aide !
 

Code :
  1. #include "stdafx.h"
  2. #include "stdio.h"
  3. #include "stdlib.h"
  4. #include "sys/types.h"
  5. #include "dirent.h"
  6. int _tmain(int argc, _TCHAR* argv[])
  7. {
  8. #define MAX_NAME 40
  9. char nomfichier[MAX_NAME];
  10. struct dirent *lecture;
  11. DIR *rep;
  12. rep=opendir("???" ); que mettre ici ? un chemin relatif ? par rapport a quel fichier du projet ? Chemin absolu ?
  13. int n;
  14. FILE *source;
  15. FILE *destination;
  16. int nbligne=1,nbcoma=0;
  17. int c;
  18. while((lecture = readdir(rep)))
  19. {
  20.  strcpy(nomfichier,lecture->d_name);
  21.  n=strlen(nomfichier);
  22.  if(((nomfichier[n-1])='d') || ((nomfichier[n-2])='p') || ((nomfichier[n-3])='s') || ((nomfichier[n-4])='.'))
  23.  {
  24.   source = fopen(nomfichier,"r" );
  25.   if(source == NULL)
  26.   {
  27.    printf("le fichier n'existe pas\n" );
  28.    return 0;
  29.   }
  30.   else printf("le fichier existe et est ouvert\n" );
  31.   nomfichier[n-1]='t';
  32.   nomfichier[n-2]='x';
  33.   nomfichier[n-3]='t';
  34.   destination = fopen(nomfichier,"w" );
  35.   if(destination == NULL)
  36.   {
  37.    printf("le fichier n'existe pas\n" );
  38.    return 0;
  39.   }
  40.   else printf("le fichier existe et est ouvert\n" );
  41.  }
  42.  //traitement
  43.  fclose(source);
  44.  fclose(destination);
  45. }
  46. return 0;
  47. }


Message édité par jeufman28 le 27-04-2008 à 23:22:10
Reply

Sujets relatifs:

Leave a Replay

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