Найти все файлы в каталоге, используя «FindFirstFileA» - C - PullRequest
1 голос
/ 04 февраля 2010

Я использую Windows API и хотел бы иметь возможность искать в указанном каталоге и возвращать имена любых файлов, которые находятся в нем.

Я начал с этого, но я ударился о кирпичную стену, так как не уверен, что делать дальше.

Вот мой прогресс:

#include <stdio.h>
#include <windows.h>

void main()
{
 HANDLE fileHandle;
 WIN32_FIND_DATAA fileData;

 fileHandle = FindFirstFileA("*.txt", &fileData);

 if(fileHandle != INVALID_HANDLE_VALUE)
 {
  printf("%s \n", fileData.cFileName);
 }
}

Ответы [ 2 ]

2 голосов
/ 04 февраля 2010

Вам нужно вызвать FindNextFile в цикле, чтобы найти все файлы. Вот полный пример здесь , вот интересные биты:

hFind = FindFirstFile(szDir, &ffd);

if (INVALID_HANDLE_VALUE == hFind) 
   return dwError;

do
{
   printf("%s\n"), ffd.cFileName);
}
while (FindNextFile(hFind, &ffd) != 0);
0 голосов
/ 20 октября 2016
#include <stdio.h>
#include <windows.h>

void main()
{
    HANDLE fileHandle;
    WIN32_FIND_DATA ffd;
    LARGE_INTEGER szDir;
    WIN32_FIND_DATA fileData;
    fileHandle = FindFirstFile("C:\\Users\\rest_of_the_Address\\*", &ffd);

    if (INVALID_HANDLE_VALUE == fileHandle)
        printf("Invalid File Handle Value \n");

    do
    {
        printf("%s\n", ffd.cFileName);
    } while (FindNextFile(fileHandle, &ffd) != 0);
    system("pause");
}

Вы пропустили некоторые объявления, и у вас были исправлены некоторые синтаксические ошибки, а также не забудьте проверить документацию msdn (здесь приведен пример msdn для программы)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...