Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

recherche fichier langage c

5 réponses
Avatar
johnatemps
Bonjour tous le monde,

j'aimerais chercher un nom de fichier sur mon disque a partir de mon
programme. jusque la j'ai réussi a le faire mais a 2 condition que
j'aimerais supprimer.
- Donner le nom exacte du fichier (EX : unfichieraupif_ind_a.txt)
- Donner le répertoire ou ce trouve le fichier (EX :
C:\emplacementDuFichier\test\ici\)

Mais je voudrais une recherche plus performante, c'est dire qu'elle puisse
faire ceci.
- Retrouver un fichier a partir d'un morceau de son nom (EX :
unfichieraupif)
- Et que je lui donne comme emplacement un 1er dossier puis elle parcours
tous les sous dossier jusqu'à ce qu'elle trouve le fichier (EX :
C:\emplacementDuFichier\, si elle ne trouve pas elle va dans
C:\emplacementDuFichier\test\ et si elle ne trouve toujours pas elle ce
place dans le dossier "ici")


J'espère que vous m'avez compris et sinon dite le moi je ré expliquerais ;).
Donc ceci dit c'est bien beau mais je n'est absolument aucune idée de
comment faire :-°, donc je suis preneur de toutes les piste que vous pourrez
me donner.
Merci d'avance

5 réponses

Avatar
Jean-Claude BELLAMY
"johnatemps" a écrit dans le message de
news:g20n50$3v3$
Bonjour tous le monde,

j'aimerais chercher un nom de fichier sur mon disque a partir de mon
programme. jusque la j'ai réussi a le faire mais a 2 condition que
j'aimerais supprimer.
- Donner le nom exacte du fichier (EX : unfichieraupif_ind_a.txt)
- Donner le répertoire ou ce trouve le fichier (EX :
C:emplacementDuFichiertestici)

Mais je voudrais une recherche plus performante, c'est dire qu'elle puisse
faire ceci.
- Retrouver un fichier a partir d'un morceau de son nom (EX :
unfichieraupif)
- Et que je lui donne comme emplacement un 1er dossier puis elle parcours
tous les sous dossier jusqu'à ce qu'elle trouve le fichier (EX :
C:emplacementDuFichier, si elle ne trouve pas elle va dans
C:emplacementDuFichiertest et si elle ne trouve toujours pas elle ce
place dans le dossier "ici")





1) En ce qui concerne la recherche à partir d'une partie du nom
de fichier, c'est inclus dans les fonctions "FindFirstFile" et
"FindFirstFileEx" :
http://msdn.microsoft.com/en-us/library/aa364418(VS.85).aspx
http://msdn.microsoft.com/en-us/library/aa364419(VS.85).aspx
et plus spécialement le paramètre lpFileName, qui peut contenir des
caractères génériques ("*" et "?")

2) En ce qui concerne l'exploration dans les sous-répertoires,
tout est dit, puisqu'il suffit de procéder à une énumération
récursive des répertoires, toujours avec FindFirstFile ou
FindFirstFileEx
Et pour chaque sous-répertoire trouvé, on effectue une recherche
du fichier.



--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
Avatar
Christian ASTOR
On 2 juin, 13:56, "johnatemps" wrote:
 Bonjour tous le monde,

j'aimerais chercher un nom de fichier sur mon disque a partir de mon
programme. jusque la j'ai réussi a le faire mais a 2 condition que
j'aimerais supprimer.
- Donner le nom exacte du fichier (EX : unfichieraupif_ind_a.txt)
- Donner le répertoire ou ce trouve le fichier (EX :
C:emplacementDuFichiertestici)

Mais je voudrais une recherche plus performante, c'est dire qu'elle puisse
faire ceci.
- Retrouver un fichier a partir d'un morceau de son nom (EX :
unfichieraupif)
- Et que je lui donne comme emplacement un 1er dossier puis elle parcours
tous les sous dossier jusqu'à ce qu'elle trouve le fichier (EX :
C:emplacementDuFichier, si elle ne trouve pas elle va dans
C:emplacementDuFichiertest et si elle ne trouve toujours pas elle ce
place dans le dossier "ici")

J'espère que vous m'avez compris et sinon dite le moi je ré expliquera is ;).
Donc ceci dit c'est bien beau mais je n'est absolument aucune idée de
comment faire :-°, donc je suis preneur de toutes les piste que vous pou rrez
me donner.



FindFirstFile()-FindNextFile()-FindClose() en récursif.

Ex (Unicode) =>

DWORD FindFileRecurse(TCHAR *pwszDir, TCHAR *pwszFile)
{
DWORD dwError = ERROR_SUCCESS;
WIN32_FIND_DATA fd;
HANDLE hFile;
TCHAR szPath[MAX_PATH];

lstrcpy (szPath, pwszDir);
lstrcat (szPath, TEXT("*.*"));

hFile = FindFirstFile(szPath, &fd);

if (hFile == INVALID_HANDLE_VALUE)
{
dwError = GetLastError();
return dwError;
}

do
{
if (!lstrcmp(fd.cFileName, L".") || !lstrcmp(fd.cFileName,
L".."))
continue;

lstrcpy (szPath, pwszDir);
lstrcat (szPath, TEXT(""));
lstrcat (szPath, fd.cFileName);

if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if (fd.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT)
continue;

dwError = FindFileRecurse(szPath, pwszFile);
if (dwError != ERROR_SUCCESS)
{
FindClose(hFile);
return dwError;
}
}
else
{
if (wcsstr(szPath, pwszFile) != NULL)
{
fwprintf(stdout, L"%sn", szPath);
}
}

} while (FindNextFile(hFile, &fd));

FindClose(hFile);

return dwError;
}
Avatar
johnatemps
Ha !!! Merci bcp pour vos reponse tres rapide et surtout tres constructive
contrairement a certain endroit ou j'ai demandé !
Donc je me lance dans la programmation et je vous tiens au courant
bonne journée a tous


"johnatemps" a écrit dans le message de news:
g20n50$3v3$
Bonjour tous le monde,

j'aimerais chercher un nom de fichier sur mon disque a partir de mon
programme. jusque la j'ai réussi a le faire mais a 2 condition que
j'aimerais supprimer.
- Donner le nom exacte du fichier (EX : unfichieraupif_ind_a.txt)
- Donner le répertoire ou ce trouve le fichier (EX :
C:emplacementDuFichiertestici)

Mais je voudrais une recherche plus performante, c'est dire qu'elle puisse
faire ceci.
- Retrouver un fichier a partir d'un morceau de son nom (EX :
unfichieraupif)
- Et que je lui donne comme emplacement un 1er dossier puis elle parcours
tous les sous dossier jusqu'à ce qu'elle trouve le fichier (EX :
C:emplacementDuFichier, si elle ne trouve pas elle va dans
C:emplacementDuFichiertest et si elle ne trouve toujours pas elle ce
place dans le dossier "ici")


J'espère que vous m'avez compris et sinon dite le moi je ré expliquerais
;).
Donc ceci dit c'est bien beau mais je n'est absolument aucune idée de
comment faire :-°, donc je suis preneur de toutes les piste que vous
pourrez me donner.
Merci d'avance




Avatar
johnatemps
Par contre etant debutant dans la programmation j'ai bcp de mal a
comprendre le programme de christian ASTOR
d'ailleur j'ai presque du mal a reconaitre le langage C :/.
En tous cas merci de l'avoir poster quand meme ca peu me servire

"johnatemps" a écrit dans le message de news:
g20n50$3v3$
Bonjour tous le monde,

j'aimerais chercher un nom de fichier sur mon disque a partir de mon
programme. jusque la j'ai réussi a le faire mais a 2 condition que
j'aimerais supprimer.
- Donner le nom exacte du fichier (EX : unfichieraupif_ind_a.txt)
- Donner le répertoire ou ce trouve le fichier (EX :
C:emplacementDuFichiertestici)

Mais je voudrais une recherche plus performante, c'est dire qu'elle puisse
faire ceci.
- Retrouver un fichier a partir d'un morceau de son nom (EX :
unfichieraupif)
- Et que je lui donne comme emplacement un 1er dossier puis elle parcours
tous les sous dossier jusqu'à ce qu'elle trouve le fichier (EX :
C:emplacementDuFichier, si elle ne trouve pas elle va dans
C:emplacementDuFichiertest et si elle ne trouve toujours pas elle ce
place dans le dossier "ici")


J'espère que vous m'avez compris et sinon dite le moi je ré expliquerais
;).
Donc ceci dit c'est bien beau mais je n'est absolument aucune idée de
comment faire :-°, donc je suis preneur de toutes les piste que vous
pourrez me donner.
Merci d'avance




Avatar
Doms
Bonjour,

"johnatemps" a écrit dans le message de news:g22og1$dcr$
Par contre etant debutant dans la programmation j'ai bcp de mal a comprendre le programme de christian ASTOR
d'ailleur j'ai presque du mal a reconaitre le langage C :/.
En tous cas merci de l'avoir poster quand meme ca peu me servire



C'est du utilisant l'API Windows et donc les type qui vont avec.
Déroutant au début mais on s'y fait (genre BOOL au lieu de bool
- qui n'existe qu'en c++ d'ailleurs je crois -).

Hormis cela, c'est du C.

Doms.