Lire un fichier en C

Résolu/Fermé
blackdam Messages postés 327 Date d'inscription lundi 19 février 2007 Statut Membre Dernière intervention 13 février 2015 - 8 mars 2007 à 10:54
lirey83 Messages postés 75 Date d'inscription mardi 2 janvier 2007 Statut Membre Dernière intervention 18 août 2007 - 9 mars 2007 à 11:01
Bonjour à tous!
Voila j'ai écrit un programme en C qui me lit des fichiers dans un dossier, mais j'aimerais que ce programme essai de lire TOUT les fichier du répertoire.est-ce possible? si oui, comment faire?
Merci de vos réponses!
A voir également:

11 réponses

Stupeflip Messages postés 391 Date d'inscription jeudi 8 février 2007 Statut Membre Dernière intervention 4 décembre 2007 94
8 mars 2007 à 11:10
Salut,

Le programme connait les noms et le nombre de fichiers, ou il doit scanner le dossier et tout lire ?
0
blackdam Messages postés 327 Date d'inscription lundi 19 février 2007 Statut Membre Dernière intervention 13 février 2015 35
8 mars 2007 à 11:16
Il doit scanner le dossier, et lire tout les fichiers!
Oui je sais je suis exigeant ;)
0
blackdam Messages postés 327 Date d'inscription lundi 19 février 2007 Statut Membre Dernière intervention 13 février 2015 35
8 mars 2007 à 14:33
J'ai eu ce bout de code qui, apparament, liste les fichiers d'un répertoire, mais je ne sais pas du tout comment l'utiliser!
public void ListeFileDirectory(string repertoire)

{

        string[] files;

        // pour avoir les noms des fichiers et sous-répertoires

        files = Directory.GetFileSystemEntries(repertoire);

        int filecount = files.GetUpperBound(0) + 1;

        for (int i = 0; i  i++)

        Console.WriteLine(files[i]);

}


help!!!!
0
lirey83 Messages postés 75 Date d'inscription mardi 2 janvier 2007 Statut Membre Dernière intervention 18 août 2007 13
8 mars 2007 à 15:08
Google te conduit à :
https://c.developpez.com/faq/?page=Les-fichiers-et-les-dossiers#FICHIERS_dir_list

y a plus qu'à étudier la structure de WIN32_FIND_DATA pour avoir les caractéristiques des fichiers
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
8 mars 2007 à 16:22
Si je comprend bien ce bou de code, il récupère le nom des fichiers dans files, un tableau de string, chaque élement de files est un nom de fichier.
Donc :
for(int i=0;i<filecount;i++)tableau_fichiers[i]=fopen(files[i],"r");
0
blackdam Messages postés 327 Date d'inscription lundi 19 février 2007 Statut Membre Dernière intervention 13 février 2015 35
8 mars 2007 à 16:28
Merci Char sniper mais je voudrais savoir quoi mettre avant, comme include etc... là je suis completement paumé!
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
8 mars 2007 à 16:44
Déjà à la tête du truc, je dirai que c'est du windows.
Donc include windows.h
Ensuite, il te faut les string : include <string>
et à la place de string, tu met std::string, ou tu met "using namespace std" au début du prog.
Et encore, le public tout au début me fait craindre que le bout de code que tu es trouvé soit en fait du java. dsl
--
Salutation !
Char Snipeur
0
blackdam Messages postés 327 Date d'inscription lundi 19 février 2007 Statut Membre Dernière intervention 13 février 2015 35
8 mars 2007 à 16:54
C'est vrai que maintenant que tu le dit, le public me fait penser a du java, je n'en sais rien! là je suis vraiment paumé mais merci quand meme!
0
lirey83 Messages postés 75 Date d'inscription mardi 2 janvier 2007 Statut Membre Dernière intervention 18 août 2007 13
8 mars 2007 à 19:27
Il ne vous plait pas le code que je vous ai indiqué. Il marche nickel, le nom du fichier se trouvant dans File.cFileName ...
0
blackdam Messages postés 327 Date d'inscription lundi 19 février 2007 Statut Membre Dernière intervention 13 février 2015 35
9 mars 2007 à 08:12
#include <windows.h>

WIN32_FIND_DATA File;
HANDLE hSearch;
BOOL re;

hSearch=FindFirstFile("*.*", &File);
if(hSearch ==  INVALID_HANDLE_VALUE)
{
   return FALSE;
}

re=TRUE;
do
{
   /* Traitement */
   re = FindNextFile(hSearch, &File);
} while(re);

FindClose(hSearch);
return TRUE;

voila le code...
Alors si je comprend bien, il va chercher tout les fichiers qui ont comme nom "qqch.qqch"et le stock dans file? c'est sa?
Mais après je ne voit pas comment mettre par exemple un printf pour m'afficher tout les fichiers qu'il a trouver!

0
blackdam Messages postés 327 Date d'inscription lundi 19 février 2007 Statut Membre Dernière intervention 13 février 2015 35
9 mars 2007 à 09:19
Et je tiens à préciser que le code compilé tel quel ne marche pas... il faut rajouter un
 main(){
--code
}

pour que sa marche...enfin je pense le compilo ne met pas d'erreur! mais je ne sais toujours pas ce que sa retourne!
0
lirey83 Messages postés 75 Date d'inscription mardi 2 janvier 2007 Statut Membre Dernière intervention 18 août 2007 13
9 mars 2007 à 11:01
Ben oui, faut un main ....
Ca te va mieux comme ça :
#include <windows.h>
#include <stdio.h>

bool Affiche()
{
  WIN32_FIND_DATA File;
  HANDLE hSearch;
  bool re;

  hSearch=FindFirstFile("*.*", &File);
  if(hSearch ==  INVALID_HANDLE_VALUE)
  {
     return false;
  }

  re=true;
  do
  {
     /* Traitement */
     printf("%s\n",File.cFileName);

     re = FindNextFile(hSearch, &File);
  } while(re);

  FindClose(hSearch);
  return true;
}

void main()
{
  Affiche();
}
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
9 mars 2007 à 10:55
Il doit bien exister une fonction C classique sans passer par ces fonctions Win de merde avec ces Handle à la !$*/!
déjà j'ai trouvé comment changer de répertoire dans : sys/file.h
regarde là eventuellement :
https://www.thecodingforums.com/threads/iterate-over-the-files-of-a-directory.291578/
autre solution, regarde l'implementation de ls sous linux ou du coté du répertoire.
En ouvran le répertoire comme un fichier, peut être que les fichiers y sont listé .?
0