OVH Cloud OVH Cloud

ouvrir tout les fichiers d'un repertoire en C

15 réponses
Avatar
Hping
Bonjour,

voila j'aimerais faire un ptit prog qui ouvre tout les fichiers d'un
repertoire dont on connait pas leur nom ...
j'arrive a lister les fichier d'un repertoire mais j'arrive pas a les ouvrir
pendant le listage (car je voudrais faire une ptite recherche dans les
fichier en meme temps)

si vous avez un bout de code ou autre ca serait super :p
merci d'avance

5 réponses

1 2
Avatar
Stephane Wirtel
Arnold McDonald (AMcD) wrote:
Stephane Wirtel wrote:

Quoi comme problèmes très exactement ? :p



Ben on va faire court : ça ne marche jamais !


C'est trop court et cela ne démontre pas tes dires.

Un biesse exemple, Firefox est multiplateforme, alors pourquoi dis-tu que cela ne marche jamais ?

La lib QT, ainsi que GtkMM, Gtk, libxml, etc... le sont aussi.

Je crois qu'il y a une faille dans ton raisonnement.
Avatar
Arnold McDonald \(AMcD\)
Stephane Wirtel wrote:

Je crois qu'il y a une faille dans ton raisonnement.



Non, il n'y a pas de faille. C'est simplement que j'ai la flemme de débattre
pour la millième fois sur le sujet. Le code portable est une utopie.
Différences de processeurs, d'OS, matérielles, etc. font que si tu veux un
code portable, ce sera un code truffés de define (prenons l'exemple du
C/C++), de cas particuliers, de lourdeurs, dont tu vas passer des heures et
des heures et des heures à mettre au point la structure pour en définir la
structure. Il va te falloir prendre en compte des dizianes de spécificités
propres à chaque OS. C'est bien plus pratique d'écrire un version séparée
pour chacun en utilisant un code le plus standard possible. déjà, rien qu'au
niveau de la maintenance, c'est beaucoup plus léger.

Ha mais oui, tu vas me sortir qu'on a qu'à s'en tenir aux normes. Oui, mais
les différences entres OS c'est pas les normes qui empêchent les éditeurs de
les créer hein...

Fin du sujet pour moi.

--
Arnold McDonald (AMcD) - Help# /2006

http://arnold.mcdonald.free.fr/
Avatar
ByB
Où est le problème ? Puisque tu as le nom du fichier dans la variable
file->d_name, qu'est ce qui t'empêche de faire un open de file->d_name,
de lire le fichier, et de faire un close avant de passer au suivant ?



Hping a formulé la demande :
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>

int main()
{
DIR *rep ;
struct dirent *file ;

rep = opendir ("c:test") ;
if (rep != NULL)
{
while (file = readdir(rep))
printf ("%sn", file->d_name) ;
(void) closedir (rep) ;
}
return 0;
}

j'utilise ca pour lister le repertoire mais pendant ce listage j'arrive pas
a ouvrir les fichiers a fur et a mesure pour effectuer une comparaisonn sur
chaque fichier :/




--
Les moments heureux coulent plus vite que les autres (mon Dieu, comme
la vie est mal arrangée !)
[Alphonse Allais]
Avatar
ByB
Il se trouve que ByB a formulé :
Où est le problème ? Puisque tu as le nom du fichier dans la variable
file->d_name, qu'est ce qui t'empêche de faire un open de file->d_name, de
lire le fichier, et de faire un close avant de passer au suivant ?




en l'occurrence, moi je ferais la chose suivante, daun un extrait de
ton code :

- ajouter des accolades après le while (file = readdir(rep))
- dans le bloc ainsi formé, ouvrir le fichier dont tu as le nom
- lire ce fichier
- fermer le fichier

et grace au while, tu passes alors naturellement au fichier suivant ...


// SNIP CODE
if (rep != NULL)
{
while (file = readdir(rep))
{
printf ("%sn", file->d_name) ;
open(file->d_name ...);
read(...);
close(...);
}
(void) closedir (rep) ;
}

// SNIP CODE




Hping a formulé la demande :
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>

int main()
{
DIR *rep ;
struct dirent *file ;

rep = opendir ("c:test") ;
if (rep != NULL)
{
while (file = readdir(rep))
printf ("%sn", file->d_name) ;
(void) closedir (rep) ;
}
return 0;
}

j'utilise ca pour lister le repertoire mais pendant ce listage j'arrive pas
a ouvrir les fichiers a fur et a mesure pour effectuer une comparaisonn
sur
chaque fichier :/






--
Nous parlons de tuer le temps, comme si hélas ! ce n'était pas lui qui
nous tuait !
[Alphonse Allais]
Avatar
ByB
Qui d'autre que Arnold McDonald (AMcD) aurait pu nous affirmer que
Hping wrote:
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>

int main()
{
DIR *rep ;
struct dirent *file ;

rep = opendir ("c:test") ;
if (rep != NULL)
{
while (file = readdir(rep))
printf ("%sn", file->d_name) ;
(void) closedir (rep) ;
}
return 0;
}

j'utilise ca pour lister le repertoire mais pendant ce listage
j'arrive pas a ouvrir les fichiers a fur et a mesure pour effectuer
une comparaisonn sur chaque fichier :/



C'est quoi ces fonctions opendir() et readdir() ??? T'es sûr que tu codes
sous Windows ?

Sous Windows, t'utilises FindFirst(), FindNext(), CretaeFile(), etc.



On les trouve par exemple dans les compilateurs Borland :

http://www.allprog.com/CBuilder/TTreeView.htm


--
Si tu ne peux pas battre ton ordinateur aux échecs, essaie le
kickboxing ![Anonyme]
1 2