Petit probleme 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 - 9 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:23
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 mardi 2 janvier 2007 Statut Membre Dernière intervention 18 août 2007 13
9 mars 2007 à 11:11
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 mardi 2 janvier 2007 Statut Membre Dernière intervention 18 août 2007 13
9 mars 2007 à 11:23
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