Petit probleme en C

Résolu
blackdam Messages postés 327 Date d'inscription   Statut Membre Dernière intervention   -  
lirey83 Messages postés 75 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour a tous!
J'ai un code qui me permet de lister les fichiers dans un dossier, qui est stocké apparament dans la variable data.cFileName.
Ensuite je prend cette variable, je la stocke dans une autre variable, mais le problème c'est que lorsque je veux ouvrir le fichier il met retourne NULL.Voila mon code :
#include<stdio.h>
#include <windows.h>

main(){
       char d[100];
       char f[100];
       WIN32_FIND_DATA data;
HANDLE h = FindFirstFile("C:\\Documents and Settings\\Blackdam\\Mes documents\\Stage\\fichiers\\*.*", &data);
BOOL bMoreFiles =  (h != INVALID_HANDLE_VALUE);
while (bMoreFiles)
{
    sprintf(d,"%s",data.cFileName);               
                                                            
   printf("%s\n",d);
   sprintf(f,"lut.%s",d);
   rename(d,f);
system("pause");
   FILE *fp = fopen (d,"r");
   printf("%s\n",fp);

if (fp == NULL)
{printf(" ");}

else
{    
   printf("ouverture reussi");
}
 bMoreFiles = FindNextFile(h, &data);}
 }

Question : comment faire pour ouvrir le fichier???

2 réponses

lirey83 Messages postés 75 Date d'inscription   Statut Membre Dernière intervention   13
 
Salut

Pourquoi tant de complication ?
D'abord, utilise chdir() pour te placer dans le bon dossier, puis fait directement :
FILE *fp = fopen (File.cFileName,"r");
pour ouvrir ton fichier.

Pense à utiliser le masque d'extension pour restreindre le nombre de fichier listé : exemple pour les fichiers cpp :
hSearch=FindFirstFile("*.cpp", &File);
0
lirey83 Messages postés 75 Date d'inscription   Statut Membre Dernière intervention   13
 
Voilà par exemple pour afficher un fichier *.cpp directement dans la console :
#include <windows.h>
#include <stdio.h>

bool Affiche(char *ext)
{
  WIN32_FIND_DATA File;
  HANDLE hSearch;
  bool re = true;
  FILE *fp;

  hSearch=FindFirstFile(ext, &File);
  if (hSearch ==  INVALID_HANDLE_VALUE)
    return false;

  do
  {
     /* Traitement */
     printf("\nFichier affiché : %s\n",File.cFileName);

     fp = fopen(File.cFileName,"r");

     if (fp != NULL)
     {
       while (!feof(fp))
          fputc(fgetc(fp), stdout);

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

  FindClose(hSearch);
  return true;
}

void main()
{
  Affiche("*.cpp");
}
0